памятка разных прогерских фишек

advertisement
[Android] Всплывающее сообщение, 22
[Android] программирование в eclipse, 18
[Android] Создание собственного компонента View, 21
[c#] TCP/IP, 18
[c++ Builder] Message сообщения, 15
[c++ Builder][TCPServer] потоки, 16
[c++] Виртуальные функции, 17
[c++] перекодировка из Utf8 в Cp1251 (Windows), 16
[c++][DLL], 14
[c++][termios] Настройка COM порта, 6
[c++][termios] Подключение к файлу COM порта, 6
[Delphi] DLL, 12
[Delphi] Message сообщения, 14
[Delphi] Запрет запуска двух копий программы, 15
[Delphi][DLL]Параметр char* из c++, 14
[Delphi][Indy] Отправка и прием почты, 13
[Delphi][TSearchrec] поиск файлов, 12
[FireBird] Процедуры, 12
[Free BSD] Настройка после установки, 10
[JAVA] Внешний вид, 8
[JAVA] Вызов внешней программы, 7
[JAVA] Диалоги сообщений, ввода, и т.д., 8
[JAVA] Запись строк, 7
[JAVA] запуск программы с большим heap size, 8
[JAVA] копирование файла ПРИМИТИВНО, 8
[JAVA] Определение, 6
[JAVA] определение throw, 8
[JAVA] открытие файла для чтения по строкам, 19
[JAVA] Получение данных с внешнего процесса, 8
[JAVA] Преобразование из String в int, 7
[JAVA] Работа с файлами, 7
[JAVA] Раскладка клавиатуры, 19
[JAVA] Системные свойства, 7
[JAVA] Сравнение значений объектов, 7
[JAVA][JNI], 20
[JAVA][JTable] Сортировка, 19
[JAVA][ME] Manifest для работы в полный экран на сенсорных устройствах, 15
[JAVA][RXTX] COM порты, 19
[JAVA][SUSE] Расположение библиотек, 19
[JAVA][SWING] списки и фокус, 19
[JAVA][SWING] таймеры, 19
[JAVA][Сериальзация], 7
[Linux] Выключение Compiz в GNOME, 5
[Linux] USB вендоры, 10
[Linux] Автовход под root, 6
[Linux] Автозапуск для icewm, 4
[Linux] Автоматическое выполнение команд, после startx, 4
[Linux] Архивация разархивация, 11
[Linux] Выставление глобальной переменной, 9
[Linux] Динамические диски, 16
[Linux] Завершение работы и перезагрузка, 4
[Linux] Изменение раскладки клавиатуры, 10
[Linux] Монтирование флешки, 4
[Linux] Назначение глобальных путей в Linux, 4
[Linux] очистка КЭШа чтения, 5
[Linux] Применение новых библиотек в системе, 4
[Linux] Разбиение и форматирование диска, 18
[Linux] Скорость повтора клавиатуры, 11
[Linux] Создание swap в файле, 13
[Linux] Создание ссылок, 10
[Linux] Установка ip и шлюза, 8
[Linux] Установка атрибутов файлу, 4
[Linux] Установка оконного менеджера и менеджера рабочего стола OPENSUSE, 4
[Linux][Debian/Ubuntu] выбор менеджера окон по умолчанию DEbian/Ubuntu, 6
[Linux][Debian/Ubuntu] установка пакета deb, 15
[Linux][Debian/Ubuntu] Установка программ в Ubuntu, 4
[Linux][Grub] Восстановление, 11
[Linux][icewm] в минимальной конфигурации для автостарта, 6
[Linux][Icewm] Настройка DPI, 14
[Linux][Lazarus] Сборка с GTK2 из исходников, 11
[Linux][Lazarus] Убрать отладочную информацию, 11
[Linux][Samba] Подсоединение папки из сети, 6
str 1
[Linux][Samba] Полезные команды, 5
[Linux][Slackware] Установка и удаление программ, 8
[Linux][Slackware] Установка системы, 9
[Linux][Slax] Настройка WindowManager, 9
[Linux][Slax] Установка на жесткий диск совместно с Windows 7, 9
[Linux][Squid] Настройка, 11
[Linux][Squid] Настройка на Ubuntu, 11
[Linux][SUSE/RedHat] Установка контролера COM портов NetMos, 12
[Linux][SUSE] Воспроизведение mp3, dvd, 10
[Linux][SUSE] Создание RPM, 9
[Linux][SUSE] Создание RPM Вариант 2, 9
[Linux][SUSE] Установка NVIDIA из исходников, 10
[Linux][Virtual Box] Запуск VM в отдельной консоли, 11
[Linux][Wine] Установка DirectX, 11
[Linux][Xorg] Реконфиг, 14
[Megafon Modem 1550] Команды для Hyper Terminal, 13
[OGRE] Tutorial-1, 20
[OGRE] Tutorial-2, 20
[OGRE] Tutorial-3, 21
[OGRE] Настройка среды Visual Studio 2010, 20
[QT4] Process получение данных, 15
[QT4] QShortcut, 17
[QT4] QString преобразование числа, 10
[QT4] Socket клиент, 15
[QT4] Socket сервер, 15
[QT4] Аналог DoEvents, 5
[QT4] добавление таймера, 5
[QT4] Запись текста, 4
[QT4] Кодировка текстового файла, 4
[QT4] Непоказывать заголовок окна, 4
[QT4] Определение текущей раскладки клавиатуры, 13
[QT4] Отключить обновления и включить – увеличение скорости фоновой загрузки таблиц, 5
[QT4] Открытие внешней программы, 5
[QT4] Отображение изображений в PaintEvent, 5
[QT4] Создание папки, 5
[QT4] Фильтр клавиш, отлавливать нажатия любым виджетом, 4
[QT4][QExtSerialPort] Сборка и настройка, 11
[QT4][SQLITE3], 13
[WinApi] Чтение запись файла, 18
[Windows 7] Восстановление загрузчика, 10
[Windows 7] Отключение QOS, 14
[Xors3D] deltaTime составление, 16
[Xors3D] Тени, 16
str 2
[Linux][Debian/Ubuntu] Установка программ в Ubuntu
sudo apt-get install prog-0.1.5
[Linux] Назначение глобальных путей в Linux
в домашней папке (cd ~) редактируем файл .profile дописываем
PATH=путь:$PATH
export PATH
[Linux] Завершение работы и перезагрузка
halt
reboot
[Linux] Применение новых библиотек в системе
ldconfig
[Linux] Установка оконного менеджера и менеджера рабочего стола OPENSUSE
/etc/sysconfig там файлы windowmanager поставить например icewm-session, displaymanager например gdm
[Linux] Автоматическое выполнение команд, после startx
в домашнем каталоге в .profile в конец добавить команды
[Linux] Автозапуск для icewm
главный файл запуска после старта иксов /root/.xsession
[Linux] Монтирование флешки
mount –t vfat /dev/sdb1 /media
[Linux] Установка атрибутов файлу
chmod u+x file
[QT4] Фильтр клавиш, отлавливать нажатия любым виджетом
1) дать понять какого виджета отлавливать
ui->checklist->installEventFilter(this);
2) в форме определить слот
private slots:
bool eventFilter(QObject*, QEvent*);
3) код программы cpp
bool WinMain::eventFileter(QObject* o, QEvent* e)
{
if(o==ui->checklist){
//если конкретный виджет отловлен
if(e->type()==QEvent::KeyPress)
//если нажаты кнопки
{
QKeyEvent* ke = (QKeyEvent*)e;
//привести тип к клавиатурному
if(ke->key()==Qt::Key_BackSpace){
//какая кнопка нажата
//что-то делаем
}
}
}
return false;
}
[QT4] Запись текста
QFile file(“file.txt”);
if(!file.open(QIODevice::WriteOnly)){}
QTextStream out(&file);
out << text << endl;
[QT4] Кодировка текстового файла
stream.setCodec(“UTF-8”);
[QT4] Непоказывать заголовок окна
this->setWindowFlags(Qt::FramelessWindowHint);
str 3
[QT4] Аналог DoEvents
qApp->processEvents();
[QT4] Открытие внешней программы
popen(“файл”,”r”); //process open (popen)
[QT4] Структура tm у time.h
int tm_sec;
//0-60
int tm_min;
//0-59
int tm_hour;
//0-23
int tm_mday;
//1-31
int tm_mon;
//0-11
int tm_year;
//1900+переменная (1900+110=2010)
int tm_wday;
//день недели 0-6
int tm_yday;
//0-365
int tm_isdst;
//DST [-1/0/1]
[QT4] Создание папки
QDir dir;
dir.mkdir(“каталог”);
[Linux] Выключение Compiz в GNOME
Alt+F2 ввести metacity –replace
[QT4] Отключить обновления и включить – увеличение скорости фоновой загрузки таблиц
QTableWidget setUpdatesEnabled(false);
[Linux] очистка КЭШа чтения
sync
echo “3” > /proc/sys/vm/drop_caches
[QT4] Отображение изображений в PaintEvent
QPoint po(0,0);
QImage img(“img.png”);
QPainter pa(this);
pa.begin(this);
pa.drawImage(po,img);
pa.end();
[QT4] добавление таймера
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_timer()));
timer->start(100);
[Linux][Samba] Полезные команды
smbd – запуск самбы
smbtree – показывает дерево каталогов в сети
smbrestart, smbd start, service smb restart – запуск перезапуск
НАСТРОЙКА САМБЫ
/etc/samba/smb.conf
[global]
workgroup=GROUP
- имя рабочей группы
netbios name=FILESERVER
- имя сервера
serverstring=Файловый сервер
- описание
log file=/var/Samba/log.log
log level=3
syslog=0
max log size=50
local master=no
security=share
display charset=CP1251
- кодировка имени файлов
unix charset=UTF-8
dos charset=cp866
[Имя общей папки]
path=/home/user
str 4
force user=root
force group=root
read only=ok
guest ok=yes
[Linux][Samba] Подсоединение папки из сети
mount.cifs //192.168.0.1/1/ /media –o user=nobody, guest, iocharset=utf8, dir_mode=0777, file_mode=0666, rw, nosuid, nodev
[Linux] Автовход под root
отключить xdm и прописать startx& в /etc/rc.local (/etc/rc.d/rc)
вариант 2: в /etc/init.d/rc в конце добавить нужный рабочий стол например: startxfce4
[c++][termios] Настройка COM порта
void setup_tty(int fd){
struct termios tios;
if(tcgetattr(tty_fd, &tios)<0) return -1;
tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
tios.c_cflag |= CS8 | CREAD | HUPCL;
tios.iflag = IGNBRK | IGNPAR; tios.c_oflag=0; tios.c_lflag=0;
tios.c_cc[VMIN] = 0;
tios.c_cc[VTIME] = 0;
tios.c_cflag &= ~CRTSCTS;
cfsetospeed(&tios, B9600); cfsetispeed(&tios, B9600);
if(tcsetattr(fd, TCSAFLUSH, &tios)<0) return -1;
return 1;}
//откл ненужных
//вкл нужные
//1 минимум символов для чтения
//время ожидания
[c++][termios] Подключение к файлу COM порта
int devfile = open(“/dev/ttyS0”, O_NONBLOCK | O_RDWR | O_NOCTTY, 0);
[Linux][icewm] в минимальной конфигурации для автостарта
/etc/X11/icewm – глобальные настройки для всех
$HOME/.icewm – настройки пользователей
в каталог с настройками включить файл startup – это скрипт автозагрузки, назначить права ему chmod u+x ./startup, в /root/.xsession
добавить путь xxkb переключатель раскладок клавиатуры ~/.xinitrc – скрипт запускается сразу после старта иксов, для автозапуска
иксов в /etc/init.d/rc перед exit 0 вставить строку /bin/su –root –c “/bin/sh –lc startx”
[Linux][Debian/Ubuntu] выбор менеджера окон по умолчанию DEbian/Ubuntu
sudo update-alternatives --set x-window-manager /usr/bin/icewm
sudo update-alternatives --set x-session-manager /usr/bin/icewm-session
[JAVA] Определение
J2S - Standart обычное применение
J2M - Mobile для мобильных устройств
J2E - Enterprise - для интернет служб
JVM - виртуальная машина Java
JMS - спецификация виртуальной машины
JDK - программный инструмент разработки
JAVA™ 2 Runtime Environment - фрейм для выполнения
Среды разработки Eclipse, NetBeans
Простой пример
public class First{
public static void main(String[] args){
System.out.print(“Hello World”);
}
}
Компиляция javac First.java после станет First.class
Запуск бинарника class - java First
Когда создается бинарник jar его запускать java -jar file
Ввод данных в консоли, создаем поток
import java.io.*;
InputStreamReader is = new InputStreamReader(System.in);
буферизация данных
BufferedReader bis = new BufferedReader(is);
String str = bis.readLine();
str 5
[JAVA] Сравнение значений объектов
Каждый объект содержит метод eqals() возвращает Boolean - например: x.equals(y)
[JAVA] Преобразование из String в int
int x = Integer.valueOf(str).intValue();
[JAVA] Работа с файлами
import java.io.*;
import java.util.*;
File fp = new File(“com\\learn\\FileTest.java”);
if(fp.isFile())
fp.createNewFile();
Можно связывать с директориями
ВВОД:
FileInputStream is = new FileOutputStream(fp);
//имя вместо fp
while((b=is.read())!=-1){
//int b
System.out.printLn(“Прочитано байт = “ + b);
}
ВЫВОД:
FileOutputStream os = new FileOutputStream(fp);
//или вместо fp имя файла
os.write(pArray[i]);
os.close();
Есть классы DataInpusStream и DataOutputStream которые работают с структурированными типами данных writeChar, reading и т.д.
Читать строки BufferedReader = new BufferedReader(new InputStreamReader(fs,charset))
Есть тип RandomAccessFile() в котором можно использовать seek
[JAVA][Сериальзация]
Объявление класса с сериальзацией
class test implements serializable
Не подвергаются поля для сериализации static и transient
Пример:
ЗАПИСЬ:
Object ds = new DemoSerial();
File fp = new File(“D:\\temp”,”demo.txt”);
ObjectOutputStream ostream = new ObjectOutputStream(new FileOutputStream(fp));
ostream.writeObject(ds);
ЧТЕНИЕ:
Object d = new DemoSerial();
DemoSerial obj = (DemoSerial)istream.readObject();
ПРИ РАБОТЕ С ФАЙЛАМИ ОБРАМЛЯТЬ В try catch
[JAVA] Запись строк
PrintWriter pr = new PrintWrite(file);
pr.Println(“”);
[JAVA] Вызов внешней программы
Process p = null;
p=Runtime.getRuntime().exec(str);
//str - команда
[JAVA] Системные свойства
Properties p = System.getProperties();
String s = p.getProperty(“user.home”);
Ключи:
java.version
//версия явы
java.vendor
//изготовитель JVM
java.vendor.url
//адрес изготовителя в инете
java.home
//каталог куда установлена система JAVA
java.class.version
//версия библиотек
java.class.path
//путь к библиотекам
os.name
//название ОС
os.version
//версия ОС
file.separator
//разделитель файлов
path.separator
//разделитель пути
line.separator
//разделитель строк
user.name
//имя пользователя
str 6
user.home
user.dir
//домашний каталог пользователя
//текущий рабочий каталог
[JAVA] определение throw
try{
throw new IOException(“message”);
}catch(IOException e){}
[JAVA] копирование файла ПРИМИТИВНО
public static void fileCopy(InputStream is, OutputStream os)
throws IOException
{
int nLength;
byte[] buf = new byte[8000];
while(true)
{
nLength = is.Read(buf);
If(nLength<0) break;
os.write(buf, 0, nLength);
}
is.close(); os.close();
}
public void CopyFile(String src, String dest){
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos1 = new FileOutputStrem(fos1);
fileCopy(fis, fos1);
}
[JAVA] Диалоги сообщений, ввода, и т.д.
String str = JOptionPane.showInputDialog(“xxx”);
JOptionPane.showMessageDialog(null, “xxx”);
[JAVA] Получение данных с внешнего процесса
Process p = Runtime.getRuntime().exec(str);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
line = input.readLine();
[JAVA] запуск программы с большим heap size
java -Xmx10000 -jar ./jarfile.jar
-Xms512m -Xmx512m
минимум максимум
[JAVA] Внешний вид
try{
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
}
catch(Exception ex){}
Другие аргументы setLookAndFeel
getSystemLookAndFeelClassName() - подстройка под ОС
“com.sun.java.swing.plaf.gtk.GTKLookAndFeel”
- тема GTK
“com.sun.java.swing.plaf.windows.WindowsLookAndFeel”
[Linux] Установка ip и шлюза
ifconfig eth0 <ip> netmask <маска>; route add default gw 192.168.0.1 eth0
[Linux][Slackware] Установка и удаление программ
Установить src2pkg (сначала скачать)
installpkg src2pkg-2.2-noarch-3.tgz
Запаковывание исходников в пакет
src2pkg -e=’--params’ -C mc-4.7.0.4.tar.bz
-e опции компиляции с параметрами
-C положить созданный пакет в тек каталог
str 7
[Linux][Slackware] Установка системы
командой cfdisk создать 2 раздела LinuxSwap и Linux, Linux раздел сделать bootable потом выбрать write и quit
потом команда Setup
выбрать пункт addswap и следовать подсказкам инсталлятора
[Linux][SUSE] Создание RPM
Например мы имеем в каталоге /root/port файлы: port-бинарник, readme и port.1
Создаем /root/port/port.spec
#общее описание
summary: Program to control your serial device
#название проекта
Name:port
#Его версия
Version 1.0
#Релиз
Release:99
#группа ПО
Group:Monitoring
#Можно указать свое имя
Licence:GPL
#Информация о создателе пакета
Packager: User
URL:http://...
#Полное описание
%Description
программа порт предназначета бла бла бла
#Файлы которые будут помещены в пакет
%files
%doc /root/port/README
/root/port/port
/root/port/port.1
для построения ввести rpm -bb /root/port/port.spec
[Linux][SUSE] Создание RPM Вариант 2
Перейти в каталог /usr/src/packages/BUILDROOT этот каталог типа когневой в Linux “/”, там восстанавливаем кусок файловой системы
(записываем файлы и каталоги так как они должны располагаться после установки. В SPEC файле в разделе %files пишем пути к нашим
файлам. команда rmpbuild -bb путь.spec создаст пакет и скажет, где его забрать.
[Linux] Выставление глобальной переменной
export TMPFIR=/home/user/tmp
export TEMPDIR=${TMPDIR}
[Linux][Slax] Установка на жесткий диск совместно с Windows 7
Скачать Grub4Dos извлеч файлы grub.exe и grldr в C:\, переименовать bootmgr в bootmgr7, переименовать grldr в bootmgr.
Редактировать menu.lst, нужен ext2 раздел, например hda2 для хранения изменений файловой системы. Иначе при перезапуске
настройки стираются.
Приоритеты: модули->changes->rootcopy
Желателен SWAP раздел
Пример menu.lst:
color cyan/blue white/blue
timeout 5
title SLAX
kernel (hd0,0)/boot/vmlinuz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/mnt/hda2/
initrd=(hd0,0)/boot/initrd.gz
boot
title WinXP
find --set-root /ntldrxp
chainloader /ntldrxp
[Linux][Slax] Настройка WindowManager
В консоле набрать команду xwmconfig и выбрать какой рабочий стол использовать
str 8
[Linux][SUSE] Установка NVIDIA из исходников
Зависимости gcc, make, kernel-source, kernel-syms, для OPENSUSE 11.2 - kernel-desctop-devel
Подготовка исх. кодов ядра
cd /usr/src/linux
make cloneconfig
make prepare
Загрузить исходники в /usr/share/doc/nvidia
Перейти на runlevel 3. Войти в консоль alt+ctrl+F1 и набрать init 3 под root-ом, перейти в каталог с драйверами ввести sh NVIDIA-Linux…run -q
Настройка Xorg
nvidia-xconfig
sax2 -r -m 0=nvidia
[Linux][SUSE] Воспроизведение mp3, dvd
Варианты:
1) Скачать: http://opensuse-community.org/Restricked_formats/11.3
2) Доб репозиторий: http://packman.inode.at/suse/11.3
3)zypper addrepo -f http://packman.inode.at/suse/11.3
zypper addrepo -f http://www.opensuse-guide.org/repo/11.3
zypper install ffmpeg flash-player libdvdcss libxine1-codecs w32codec-all k3b-codecs lame mplayer smplayer vlc
[Windows 7] Восстановление загрузчика
bootsect /mbr All
bootsect /nt60 All
лучше:
bootrec /fixmbr
bootrec /fixboot
еще:
bootsect /nt60 C: /mbr
[Linux] Создание ссылок
ln file1 file2 - создать жесткую ссылку в тек каталоге
ln с ключем -S создает символьную ссылку в качестве первого параметра пишется АБСОЛЮТНЫЙ АДРЕС - также ссылки можно создать
на каталог
[QT4] QString преобразование числа
QString str; str.setNum(число);
[Linux] USB вендоры
lsusb узнать id usb устройств
создать правило cat /etc/udev/rules.d/90-myrule.rules SUBSYSTEM==”tty”,
ATTRS{idVendor}==”067b”,ATTRS{idProduct}==”2303”,SYMLINK+=”ttyS4”
[Linux] Изменение раскладки клавиатуры
setxkbmap -option grp:switch, grp:alt_shift_toggle us,ru
setxkbmap us,ru -option “grp:ctrl_shift_toggle, grp_led:scroll”
[Free BSD] Настройка после установки
Настройка и запуск иксов:
Xorg -configure -создаст ~/xorg.conf.new
cp ~/xorg.conf.new /etc/X11/xorg.conf
Определение менеджера окон
PATH=/usr/local/kde4/bin:$PATH
exports PATH
startkde4
$echo “exec startkde”>~/.xinitrc
startx
Локализация CP1251
Редактируем /etc/login.conf
Russian/Russian User Accounts:
:charset=CP1251:
:lang=ru_RU_CP1251:
:tc=default:
мышь в KDE
str 9
/etc/rc.conf
hald_enable=”yes”
[Linux] Архивация разархивация
tar -cvf foo.tar.gz ./folder
-архивация
tar -xvf foo.tar.gz
-разархивация
[Linux] Скорость повтора клавиатуры
xset r rate 250 25
- 250 милисек ждать, 25 ск. повтора
[Linux][Lazarus] Убрать отладочную информацию
strip --strip-all ./project1
[Linux][Squid] Настройка
Открыть /etc/squid/squid.conf
Вписать:
acl allowed_hosts src 192.168.0.0/255.255.0.0
http_access allow allowed_hosts
http_port 3128
ЗАПУСТИТЬ:
squid -z
squid -k shutdown
squid d
[Linux][Wine] Установка DirectX
wget http://www.kegel.com/wine/winetricks
sh winetricks d3dx9
[Linux][Squid] Настройка на Ubuntu
http_port 192.168.137.1:8080
acl LocalNet src 192.168.137.0/24
http_access allow LocalNet
Выполнить sudo squid restart
[Linux][Grub] Восстановление
sudo grub
find /boot/grub/stage1
root(hd0,0)
setup(hd0)
quit
exit
sudo gedit /boot/grub/menu.lst
добавить строки в файл menu.lst
title WindowsXP
root (hd0,1)
chainloader +1
title SUSELinux
root (hd,1,1)
kernel /boot/vmlinuz-2.6.34-12-default vga=0x317
initrd /boot/initrd-2.6.34-12-default
[Linux][Virtual Box] Запуск VM в отдельной консоли
xinit /usr/bin/VirtualBox --startvm “XP” --fullscreen -- /usr/bin/Xorg :1
для ctrl+alt+F8
[Linux][Lazarus] Сборка с GTK2 из исходников
gmake clean all LCL_PLATFORM=gtk2
[QT4][QExtSerialPort] Сборка и настройка
собрать qmake -unix
make
.so файлы поместить в /usr/local/lib
выполнить ldconfig
в PRO файл вписать
unix:DEFINES = _TTY_POSIX__
str 10
LIBS += -lqextserialport
в заголовок
#include “qextserialport.h”
port->setBaudrate(BAUD9600);
port->setFlowControl(FLOW_OFF);
port->setParity(PAR_NONE);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
port->setTimeout(0,1);
[Delphi] DLL
Способ применения
implementation
…………………………
function foo(Par1:string):retype;stdcall;external ‘DLLNAME.DLL’ name ‘FunctionName’ index FunctIndex;
procedure proced(Par1:type);stdcall;external ‘DLL’ name ‘ProcName’ index ProcInedx
Исходник DLL:
пишем процедуры и функции и добавляем их в
exports foo; //function foo();stdcall;
------------------Динамическая загрузка DLL
var
GetText:function(Lang:Boolean):PChar; //string не использовать ато не работает
LibHandle:THandle;
Procedure But1Click;
begin
@getText:=nil;//чистим
LibHandle:=LoadLibrary(‘MYDLL.DLL’);
if libHandle >= 32 then begin
@getText:=GetProcAddress(LibHandle,’GetText’);
ShowMessage(StrPas(GetText(true)));end;
freelibrary(libhandle);
[FireBird] Процедуры
begin
for запросселект from табл into :переменные,:выходные do suspend;
end.
Output parameters = структура таблицы
Input parameters = входные значения
Variables = преременные внутри процедуры
[Delphi][TSearchrec] поиск файлов
var sr:TSearchRec;
found:integer;
begin
found:=FindFirst(‘path’,faAnyFile, sr);
while(found=0) do begin
if(sr.name<>’.’) and (sr.name<>’..’) then memo1.lines.add(sr.name);
found:=findNext(sr);
end;
[Linux][SUSE/RedHat] Установка контролера COM портов NetMos
Найти существующие порты
Линукс поддерживает 4 порта (ttyS0, ttyS1, ttyS2, ttyS3) под обычное подключение. Самые лучшие /dev/ttyS0, /dev/ttyS1
поддерживаются мат.платами, и ttyS2, ttyS3, другими платами. Порты можно проверить следующими командами:
setserial /dev/ttyS0 -a
если на COM1 установлена мышь - выдаст /dev/ttyS0: Device or resource busy
если на порт ничего не подключено выдаст:
/dev/ttyS0, line 0, UART:16550A, Port: 0x3f8, irq:4
Baud_base: 115200, clos_delay:50, divisor:0
closing wait: 3000, closing_wait2:infinite
Flags:spd_normal skip_test
Найти ресурсы PCI карыт (I/O и IRQ) для портов
mode /proc/pci или lspci -v
получаем результат
str 11
Запомнить I/O и IRQ у платы, где vendor id=9719, Device id=9835, сконфигурировать параметры портов
setserial /dev/ttyS2 port 0xc000 UART 16550A irq 11 Baud_base 115200
[QT4][SQLITE3]
Добавить в pro файл QT+=sql
инклудить #include <QSql>
QSqlDatabase db = new QSqlDatabase::addDataBase(“QSQLITE”);//типы QDB2, QIBASE, QMYSQL, QODBC, QPSQL, QTDS
db.setDataBaseName(“class.db”);
QSqlTableModel model;
model.setTable(“student”);
model.setHeaderData(0,Qt::Horizontal, “id”);
model.setHeaderData(1,Qt::Horizontal, “name”);
model.setHeaderData(2,Qt::Horizontal, “addr”);
model.setFilter(“name LIKE ‘%имя%’);
model.select();
ui->tableview->setmodel(model);
model.setSort(2,Qt::AscendingOrder);
удаление добавление и т.д. подстверждается model.submitAll();
QSqlRecord rec = model.record(0);
[QT4] Определение текущей раскладки клавиатуры
qApp->keyBoardInputLocale();
[Megafon Modem 1550] Команды для Hyper Terminal
AT^U2DIAG=0 (режим только модем)
AT^U2DIAG=1 (режим модем+CDROM)
AT^U2DIAG=255 (все)
AT^U2DIAG=256 (все кроме CDROM)
[Linux] Создание swap в файле
dd if=/dev/zero of=/swap bs=1024 count=8208
mkswap /swap
/bin/sync
swapon /swap
[Delphi][Indy] Отправка и прием почты
for i:=1 to idpop3.checkMessages do begin
idpop3.retreive(I,idMessage);
for p:=0 to idmessage.Messageparts-1 do
if(idmessage.messageParts[p] is TIDAttachment) then begin
TIDAttachment(idMessage.MessageParts[p]).SaveToFile(path+TIDAttachment(idmessage.messageparts[p].fileNmae);
end;
if(idMessage.messageParts[p] is tidtext) then
memo1.Lines.addstrings((idmessage.Messageparts[p] as tidtext).Body);
далее сохранить и открыть в TWebBrowser
отправка:
var txt:TIDText;
with mess do begin
from.text:=’от кого’;
receipients.emailaddresses:=e_to.Text;
Subject:=’Тема’;
ContetnType:=’multipart/mixed’;
ContentTransferingEncoding:=’8bit’;
end;
txt:=tidtext.Create(mess.MessageParts);
txt.body.Text:=editor.text;//memo
txt.contentType:=’text/html’;
txt.charset:=’utf-8’;
txt.parentPart:=-1;
mess.charset:=’utf-8’;
smtp.send(mess);
smtp.Disconnect;
ПОДКЛЮЧЕНИЕ:
idpop3.Host:=’адрес’;smtp.host:=’адрес’;
str 12
idpop3.username:=’name’;
idpop3.password:=’pass’;
[Windows 7] Отключение QOS
gpedit.msc -> Конфигурация компьютера-> адм. шаблоны -> Сеть -> Дисп пакетов QOS
ограничить резервируемую пропускную способность -> включить и выстаить процент 0
[Linux][Icewm] Настройка DPI
В ~/.Xresources написать
Xft.dpi: 96.0
Xft.hinting true
Xft.hintstyle hintfull
Xft.anialias true
Xft.tgba rgb
xrandr -s 1024x768
[Linux][Xorg] Реконфиг
sudo X -configure
cp ~/xorg.conf.new /etc/X11/xorg.conf
[c++][DLL]
Предотвращение искажения имен функций extern “C”
{
int Func1();
int Func2(int par);
}
dll.cpp:
extern “C” __declspec(dllexport) void __stdcall MyFunction(void)
{
cout<”Hi From DLL”<<endl;
}
dll.def:
EXPORTS
MyFunction
testdll.cpp:
typedef void (__stdcall *MYPROC)(void);
int main(void)
{
HMODULE hLib=LoadLibrary(“DLL.dll”);
MYPROC MyFunction=(MYPROC)GetProcAddress(hLib, “MyFunction”);
MyFunction();
}
Использование dll:
HMODULE hModule = LoadLibrary(“DLL.dll”);
typedef int (*PGetSum)(const int, const int);
PGetSum pGetSum = (PGetSum)GetProcAddress(hModule, “getSum”);
_ASSERT(pGetSum!=NULL);
const int res = pGetSum(10,10);
Всегда нужно выгружать DLL - FreeLibrary(hModule);
[Delphi][DLL]Параметр char* из c++
function Read(var Answer:array of ansichar):Boolean;
для передачи параметра нужно инициировать var
ch:array[0..255] of ansichar;
pch:pansichar;
pch:=@ch;
_read(pch);
str:=pch;
[Delphi] Message сообщения
объявить функцию
procedure my(var b:TMessage);message WM_USER+1;
str 13
послать сообщение
postmessage(handle,WM_USER+1,nil,nil);
[c++ Builder] Message сообщения
Компонент TApplicationEvents
void __fastcall TMainForm::ApplicationEvents1Message(tagMSG &Msg, bool &handled)
{
switch(Msg.message)
{
case WM_USER+1:
break;
}
}
[Delphi] Запрет запуска двух копий программы
var HM:THandle;
function Check:Boolean;
begin
HM:=OpenMutex(MUTEX_ALL_ACCESS,false,’Proj’);
Result:=(HM<>0);
if HM=0 then HM:=CreateMutex(nil, false, ‘Proj’);
end;
begin
//проверка на запуске
if check then exit;
[Linux][Debian/Ubuntu] установка пакета deb
dpkg -i ./file.deb
[QT4] Socket клиент
В pro файл добавить QT += network
QTcpSocket client;
QHostAddress addr(“192.168.0.1”);
client.connectToHost(addr, port);
client.write(str, 50);
[QT4] Socket сервер
В pro файл добавить QT += network
QTcpServer server;
QTcpSocket *client;
//в конструкторе окна
connect(&server, SIGNAL(newConnection()), this, SLOT(acceptConnection()));
server.listen(QHostAddress::Any, 888);
//accept connection функция
client=server.nextPendingConnection();
connect(client, SIGNAL(readyRead()), this, SLOT(startRead()));
//функция startRead
char buffer[1024];
client->read(buffer, client->bytesAviable());
[QT4] Process получение данных
QProcess* pr;
pr = new QProcess();
pr->start(“команда”);
pr-write(“что послать в консоль”);
pr->writeForReadyRead(3000);
pr->readAll();
[JAVA][ME] Manifest для работы в полный экран на сенсорных устройствах
MIDlet-Touch_Support: True
UseNativeTextButtons: false
str 14
ReverseSoftKeys: true
UseNativeCommands: false
LGE-MIDlet-TargetLCD-Height: 480
LGE-MIDlet-TargetLCD-Width: 320
[Xors3D] deltaTime составление
int time1 = xCatchTimeStamp();
//после xFlip
float delta = xGetElapsedTime(time1);
[c++ Builder][TCPServer] потоки
создать класс
class TServerThread:public TServerClientThread
{
public:
__fastcall TServerThread(bool CreateSuspended, TServerClientWinSocket *ASocket): TServerClientThread(CreateSuspended, ASocket){}
void __fastcall TServerthread::ClientExecute()
{
FreeOnTerminate = true;
TWinSocketStream *socket;
//создать сокет с таймаутом
socket = new TWinSocketStream(ClientSocket, 10000);
while((!Terminated) && (ClientSocket->Connected))
{
if((!Terminated) && (Socket->WaitForData(30000)))
{
//код работы
}
}
}
//unit 1.cpp:
void __fastcall TForm1::servGetThread(…)
{
SocketThread = new TServerThread(True, ClientSocket);
SocketThread->Priority=tpLower;
SocketThread->Resume();
}
[Xors3D] Тени
xGraphics3D;
xCreateDSS(1024,1024);
light=xCreateLight();
xRotateEntity(light,45,0,0);
xCameraEnableShadows(cam);
xInitShadows(512,0,256);
xLightEnableShadows(light,1);
xSetShadowParams(4,0.85f,True,300);
xLightShadowEpsilons(light,0.0001,0.16);
xRenderWorld(True,1);
[Linux] Динамические диски
1. ядро должно быть собрано с поддержкой dynamic disc CONFIG_LDM_PARTITION=y
2. Собрать тома:
составной linear
mdadm --build /dev/md0 -n 2 -l linear /dev/sdb2 /dev/sdc1
mount -t ntfs-3g -o ro /dev/md0 /mnt/linear_volume
!!! Порядок следования устройств важен
Чередующийся stripe
mdadm --build /dev/md2 -n 2 -l stripe -c 64 /dev/sdb4 /dev/sdc3
mount -t ntfs-3g -o ro /dev/md2 /mnt/stripe_volume
[c++] перекодировка из Utf8 в Cp1251 (Windows)
string Utf8_to_cp1251(const char *str)
{
str 15
string res;
int result_u, result_c;
result_u = MultiByteToWideChar(CP_UTF8,0,str,-1,0,0);
if(!result_u) return 0;
wchar_t *ures=new wchar_t[result_u];
if(!MultiByteToWideChar(CP_UTF8,0str,-1,ures,result_u))
{
delete[] ures;
return 0 ;
}
result_c=WideCharToMultiByte(1251,0,ures,-1,0,0,0,0);
if(!result_c)
{
delete[];
return 0;
}
char *cres=new char[result_c];
if(!WideCharToMultiByte(1251,0,ures,-1,cves,result_c,0,0))
{
delete[] cres;
return 0;
}
delete[] ures;
res.append(cres);
delete[] cres;
return res;
}
[c++] Виртуальные функции
Пример для понимания:
class Ancestor
{
public:
virtual void function1(){cout<<”Ancestor::function1()”<<endl;}
void function2() {cout<<”Ancestor::function2()”<<endl;}
};
class Descendant:public Ancestor
{
public:
virtual void function1(){cout<<”Descendant::function1()”<<endl;}
void function2(){cout<<”Descendant::function2()”<<endl;}
};
Descendant* pointer = new Descendant();
Ancestor* pinter_copy = pointer;
pointer->function1();
pointer->function2();
pointer_copy->function1();
pointer_copy->function2();
вывод такой:
Descendant::function1()
Descendant::function2()
Descendant::function1()
//потомучто инициировалось от descendant и функция виртуальня
Ancestor::function2()
//хоть и инициировалось от dencendant но функция не виртуальная!
[QT4] QShortcut
Работате только в том окне которое вызывает шорткат
нюанс - например если в диалоге переопределить escape, то окно отработает только функцию, но окно не закроется
#include <QShortcut>
QShortcut* key;
QString keys(“ctrl+X”);
key = new QShortcut(this);
key->setKey(QKeySequence(keys));
key->setEnabled(true);
str 16
connect(key, SIGNAL(activated()), this,SLOT(on_key()));
[Linux] Разбиение и форматирование диска
cfdisk /dev/sda - разбить
mkfs /dev/sda1 -форматировать
[WinApi] Чтение запись файла
Handle hFile = CreateFileA(“C:/test.txt”, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,FILE_ATRIBUTE_NORMAL,NULL);
char buf[1024];
DWORD nBytesRead;
DWORD bufLen;
ReadFile(hFile, buf, bufLen, &nBytesRead, NULL);
CloseHandle(hFile);
hFile = CreateFileA(“C:/test1.txt”, GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(hFile,buf,bufLen,&nBytesRead,NULL);
CloseHandle(hFile);
[Android] программирование в eclipse
Создание GUI в редакторе xml в eclipse. При создании элементов интерфейса им присваивается id, которые автоматически
генерируются в классе R, в res/layouts
Код программы для доступа к элементам интерфейса:
import android.widget.*;
public class Main extends Activity{
Button but1;
}
Прослушка событий нажатия мыши
import android.widget.*;
import android.view.View.OnClickListener;
public class Main extends Activity implements OnClickListener{
Button but1;
public void onCreate(Bundle savedInstanceState){
but1.setOnClickListener(this);
}
public void onClick(View v)
{
if(v==but1);//чтото делаем
}
}
activity означает форму, установка контента этому activity - setContentView(R.layouts.main;
присваивание контролов - but1 = (Button)findViewById(R.id.but1);
[c#] TCP/IP
Сервер
using System.Net; using System.Net.Socket; using System.IO;
//Main
IPAddress localAddress=IPAddress.Parse(“127.0.0.1”);
TCPListener listener = new TCPListener(localAddress, 2200);
listener.Start(1);
while(true){
TcpClient client = listener.AcceptTcpClient();//ждем клиента
NetworkStream io = client.GetStream();
StreamWriter sw=newStreamWriter(io);
sw.WriteLine(“Hello”);
sw.Flush();
client.Close();
}
Клиент:
TcpClient tcpClient = new TcpClient(“PPP_PEER”,2200);
NetworkStream newtworkStream = tcpClient.GetStream();
StreamReader sr=new StreamReader(networkStream);
StreamWriter sw = new StreamWriter(networkStream);
string sr.ReadLine();//ждем сообщения
str 17
[JAVA][SWING] списки и фокус
JList - добавление элементов списка
void Add(String str){
DefaultListModel md = new DefaultListModel();//import javax.swing.*;
for(int i=0;i<list.getModel.getSize();i++)
{
md.addElement(list.getModel().getElementAt(i));
}
md.addElement(str);
int last_index=list.getModel().getSize();
list.setModel(md);
list.setSelectedIndex(last_index);
list.ensureIndexIsVisible(last_index);
}
Перевести фокус на элемент
textbox.requestFocus();
[JAVA][SUSE] Расположение библиотек
/usr/lib/jvm/jre/lib/i386 тут лежат *.so
[JAVA][RXTX] COM порты
Получение списка доступных портов
public Vector<String> getPortList(){
Enumeration<CommPortIdentifier> portList;
Vector<String> portVect = new Vector<String>();
portList=CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId;
while(portList.hasMoreElements()){
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){
portVect.add(portId.getName());
}
}
return portVect;
}
void ComPortConnect(String portName){
CommPortIdentifier portIdentifier;
try{
portIdentifier=CommPortIdentifier.getPortIdentifier(portName);
SerialPort=(SerialPort)portIdentifier.open(“RTBug_network”,2000);
serialPort.setSerialPortParams(115200, SerialPort.DataBITS_8, SerialPort.STOP_BITS_1, SerialPort.PARITY_NONE);
inputStream=serialPort.getInputStream();
outputStream=serialPort.getOutputStream();
…..
[JAVA][SWING] таймеры
ActionListener ar = new ActionListener(){
@override public void actionPerformed(ActionEvent evt){
//код
}};
int interval = 100;
Timer upd_timer=new Timer(interval, ar);
[JAVA] Раскладка клавиатуры
t_text.getInputContext().SelectInputMethod(new Locale(“ru”));
InputContext.getInstance().getLocale();
[JAVA] открытие файла для чтения по строкам
File file = new File(“path.txt”);
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),”UTF-8”));
[JAVA][JTable] Сортировка
TableRowSorter<TableModel> sorter = new TableRowSorter(table.getModel());
sorter.setSortable(column, true); table.setSortable(sorter);
str 18
[JAVA][JNI]
Нужен компилятор например dev-c++
1. Создаем обычный класс
public class JniTest{
static{
system.loadLibrary(“JniTest”);
}
public native int showString(String message);
}
2. компилим javac JniTest.java, получаем JniTest.class
3. javah -classpath . JniTest получаем header для c++
4. создаем cpp и прописываем код нужной функции return 0;
5. компилим как обычно только к include доб путь из JAVA_HOME
6. Использование класса просто
JniTest jt = new JniTest();
jt.showString(“Hello World!!!”);
[OGRE] Настройка среды Visual Studio 2010
Выполнить в консоле setx OGRE_HOME %CD% - где папка с огром
Создать новый проект Win32 File - new - project, выбрать Empty Project, извлеч Tutorial Framework с шаблоном. Добавить в проект
файлы BasicApplication.cpp/h и TutorialApplication.cpp/h. Зайти в project - properties выбрать All Configurations изменить Character Set в
Use MultiByte, из General Configuration page.
Debuggung Configuration Propertes:
Command: $(OGRE_HOME)\Bin\$(Configuration)\$(ProjectName).exe
WorkingDirectory: $(OGRE_HOME)\Bin\$(Configuration)
Назначить c++ General Include Directories:
$(OGRE_HOME)\include\OIS
$(OGRE_HOME)\include\OGRE
$(OGRE_HOME)\Samples\Common\include
$(OGRE_HOME)\boost_1_42
Назначить Linker General Directories:
$(OGRE_HOME)\lib\$(Configuration) или $(ConfigurationName)в ранних MSVC++
$(OGRE_HOME)\boost_1_42\lib
назначить Build events - post - build events command line
copy “$(OutDir)\$(TargetFileName)” “$(OGRE_HOME)\Bin\$(Configuration)”
Настройка для Active( Debug)
Linker Input: OgreMain_d.lib OIS_d.lib
Настройка для Release
Linker Input: OgreMain.lib OIS.lib
[OGRE] Tutorial-1
В void TutorialApplication::createScene(void)
Ogre::Entity* ogreHead = mSceneMgr->CreateEntity(“Head”,”ogrehead.mesh”);
Ogre::SceneNode* headNode = mSceneMgr->GetRootSceneNode()->CreateChildSceneNode();
headNode->attachObject(ogreHead);
//Set ambient light
mSceneMgr->SetAmbientLight(Ogre::ColorValue(0.5,0.5,0.5));
//create a light
Ogre::Light* l =mSceneMgr->createLight(“MainLight”);
l->setPosition(20,80,50);
Для юзанья Entity нльзя напрямую их нужно обязательно прикладывать к SceneNode, и тогда станет возможным изменение положения
и т.д.
Система координат:
headNode3->roll(Ogre::Degree(-90));
Включение DLL библиотек:
Во все без исключения библиотек нужно складывать OgreMain.dll и cg.dll , клавиатура и мышь OIS.dll
Включение cfg библиотек
plugins.cfg
resources.cfg - указаны каталоги для сканирования ресурсов
ogre.cfg - экран конфигурации OGRE графич установки
media.cfg
[OGRE] Tutorial-2
Создание камеры
str 19
::CreateCamera(void);
mCamera = mSceneMgr->CreateCamera(“PlayerCam”);
можно использовать mSceneMgr->getCamera указав ее имя это чтобы не хранить указатели на объекты
Позиции и обзор:
mCamera->setPosition(Ogre::Vector3(0,10,500));
mCamera->lookAt(Ogre::Vector3(0,0,0));
Отсечение и дальность:
mCamera->setNearClipDistance(5);
mCamera->setFarClipDistance(10000);
Камера контроллер:
mCameraMan = new OgreBites::SdkCameraMan(mCamera);
Вьюпорты:
Ogre::Viewport* vp = mWindow->addViewPort(mCamera);
vp->setBackGroundColour(Ogre::ColourValue(0,0,0)); //цвета определяются между 0 и 1
//соотношение сторон
mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));
Освещение и тени:
OGRE поддерживает 3 типа теней Ogre::SHADOWTYPE_TEXTURE_MODULATIVE - наиболее быстрый
SHADOWTYPE_STENCIL_MODULATIVE - не столь точный
SHADOWTYPE_STENCIL_ADDITIVE -обрабатывает каждый источник света
[OGRE] Tutorial-3
Использование теней:
Класс SceneManager имеет метод setShadowTechnique, при создании Entity setCastShadows, бросает ли тень или нет.
mSceneMgr->setShadowTechnique(OGRE::SHADOWTYPE_STENCIL_ADDITIVE);
Ogre::Entity* entNinja = mSceneMgr->createEntity(“Ninja”,”ninja.mesh”);
entNinaja->setCastShadows(true);
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entNinja);
создание плоскости:
Ogre::Plane plane(Ogre::Vector3::Unit_Y,0);
теперь плоскость нужно зарегистрировать чтобы использовать:
Ogre::MeshManager::getSingleton().createPlane(“ground”, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,
1500,1500,20,20,true,1,5,5,Ogre::Vector3::UNIT_Z);
Ogre::Entity* entGround = mSceneMgr->createEntity(“GroundEntity”, “ground”);
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entGround);
Указать чтобы поверхность не бросала теней т.к. она является отображением тени.
Материалы:
entGround->setMaterialName(“Examples/Rockwall”);
entGround->setCastShadows(false);
[Android] Создание собственного компонента View
//Шаблон всех собственных компонентов
public class DrawView extends View
{
public DrawView(Context context)
{
super(context);
}
}
//Добавить onDraw
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
}
//пример
public class DrawView extends View
{
private Paint paint;
public DrawView(Context context)
{
super(context);
paint = new Paint();
//задаем цвет рисования
paint.setColor(Color.GREEN);
str 20
// задаем размер шрифта
paint.setTextSize(25);
// сгладить углы шрифта
paint.setAntiAlias(true);
}
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawText("Hello World", 5, 30, paint);
// если компонент видно то нужно его отрисовать
//в будущем
invalidate();
}
[Android] Всплывающее сообщение
Toast.makeText(this, "Входим", Toast.LENGTH_LONG).show();
str 21
Download