1. Для работы ntfs-3g требуется последняя версия fuse. Так что сначала скачаем и установим его:
wget http://flomertens.keo.in/debian/ntfs-3g/binary-i386/fuse-utils_2.5.3-1_i386.deb wget http://flomertens.keo.in/debian/ntfs-3g/binary-i386/libfuse2_2.5.3-1_i386.deb
sudo dpkg -i libfuse2_2.5.3-1_i386.deb fuse-utils_2.5.3-1_i386.deb
2. Теперь установим ntfs-3g:
wget http://flomertens.keo.in/debian/ntfs-3g/binary-i386/ntfs-3g_20070714-BETA-1_i386.deb
sudo dpkg -i ntfs-3g_20070714-BETA-1_i386.deb
3. Теперь, когда всё установлено, настроим автоматическое монтирование NTFS-раздела с поддержкой записи через ntfs-3g. Для начала выясним - какой, собственно раздел в NTFS? Для этого выполним команду
sudo fdisk -l | grep NTFS
смотрим на вывод. Первая колонка - это и есть имя нашего NTFS-раздела.
Его-то и нужно внести в /etc/fstab
sudo nano /etc/fstab
найдите строку, описывающую NTFS и убедитесь, что это именно тот раздел, который мы нашли посредством вышеописанной процедуры. Закомментируйте его, а под ним добавьте строку следующего вида:
/dev/ваш_раздел /media/куда_монтировать ntfs-3g silent,umask=0,locale=ru_RU.utf8 0 0
примечание: если Вы используете кодировку, отличную от utf8 - поздравляю, Вы ССЗБ. :)
4. В завершение, нам потребуется настроить автозагрузку fuse во время загрузки системы, наберите:
sudo nano /etc/modules
и в конце файла добавьте новую строку fuse
5. Осталось немного. Подгрузить модуль fuse и перемонтировать диск. Сделаем же это!
sudo modprobe fuse
sudo umount -a
sudo mount -a
Статья содрана из (боюсь, что может удалиться)
Monday, March 9, 2009
Friday, February 6, 2009
Смена пароля root в MySQL
1. /etc/init.d/mysql stop
2. mysqld_safe --skip-grant-tables &
3. mysql -u root
4. update user set password=password("parol") where user='root';
5. flush privileges;
6. mysql exit;
7. /etc/init.d/mysql stop
8. /etc/init.d/mysql start
2. mysqld_safe --skip-grant-tables &
3. mysql -u root
4. update user set password=password("parol") where user='root';
5. flush privileges;
6. mysql exit;
7. /etc/init.d/mysql stop
8. /etc/init.d/mysql start
Sunday, January 25, 2009
CompactFramework & SharpDevelop
Чтобы создавать приложения для WinCE без использования громоздкой и платной среды разработки как VS http://johnbokma.com/mexit/2006/11/23/net-cf-without-visual-studio.html
Wednesday, December 3, 2008
Установка и настройка OpenBox. Xubuntu 8.10
Обновляем репы
# sudo apt-get update
Устанавливаем OpenBox
# sudo apt-get install openbox
Перезапускаемся, чтобы зайти под OpenBox-сессией
# sudo reboot
Так. Не хватает для начала обоев. Ставим feh - довольно распростаненный просмотровщик.
# sudo apt-get install feh
Теперь установим картинку
# feh --bg-scale /путь/до/картинки
Теперь установим панельку (так привычнее)
# sudo apt-get install pypanel
Теперь создадим файл автозапуска приложений (в дальнейшем будем редактировать его)
~/.config/openbox/autostart.sh
И запишем автозапуск воллпапера и pypanel
pypanel &
feh --bg-scale /full_path_to_wall &
Настройка pypanel осуществляется через файл ~/.pypanelrc
Также должны быть созданы файлы конфигураций ~/.config/openbox/rc.xml и ~/.config/openbox/menu.xml
Также установим conky (и пропишем в autostart.sh)
# sudo apt-get install conky
Первая статья о настройке закончена. Она является основой для дальнейшей беседы.
# sudo apt-get update
Устанавливаем OpenBox
# sudo apt-get install openbox
Перезапускаемся, чтобы зайти под OpenBox-сессией
# sudo reboot
Так. Не хватает для начала обоев. Ставим feh - довольно распростаненный просмотровщик.
# sudo apt-get install feh
Теперь установим картинку
# feh --bg-scale /путь/до/картинки
Теперь установим панельку (так привычнее)
# sudo apt-get install pypanel
Теперь создадим файл автозапуска приложений (в дальнейшем будем редактировать его)
~/.config/openbox/autostart.sh
И запишем автозапуск воллпапера и pypanel
pypanel &
feh --bg-scale /full_path_to_wall &
Настройка pypanel осуществляется через файл ~/.pypanelrc
Также должны быть созданы файлы конфигураций ~/.config/openbox/rc.xml и ~/.config/openbox/menu.xml
Также установим conky (и пропишем в autostart.sh)
# sudo apt-get install conky
Первая статья о настройке закончена. Она является основой для дальнейшей беседы.
Кнопки плеера на PyPanel
В примере используется mocp плеер.
В автостарт записывается
# mocp -S &
На панель
Выделяем область для ланчеров
Для других плееров см # player --help, чтобы узнать управление из консоли
Информация взята с сайта http://forum.ubuntu.ru/index.php?topic=42219.msg306514
В автостарт записывается
# mocp -S &
На панель
LAUNCH_LIST = [
"mocp -r", "~/.themes/buttons/previous.png"),
("mocp -v +5", "~/.themes/buttons/plus.png"),
("mocp -v -5", "~/.themes/buttons/minus.png"),
("mocp -t shuffle", "~/.themes/buttons/shuffle.png"),
("mocp -P", "~/.themes/buttons/pause.png"),
("mocp -U", "~/.themes/buttons/unpause.png"),
("mocp -p", "~/.themes/buttons/play_from_first.png"),
("mocp -f", "~/.themes/buttons/next.png"),
]Выделяем область для ланчеров
DESKTOP = 1 # Desktop name section
TASKS = 2 # Task names section
TRAY = 3 # System tray section
CLOCK = 4 # Clock section
LAUNCHER = 5 # Application launcher sectionДля других плееров см # player --help, чтобы узнать управление из консоли
Информация взята с сайта http://forum.ubuntu.ru/index.php?topic=42219.msg306514
Sunday, November 30, 2008
Java. Сохранение XML файла с помощью API
Если чтение XML-данных осуществляется с помощью одного или нескольких API, то вполне логично и сохранять XML-документ, используя те же API. К примеру, при работе с XML через JDOM API после получения ссылки на объект JDOM Document запись можно осуществлять следующим образом:
outputter.setFormat(Format.getPrettyFormat());
outputter.output(myDocument, new FileWriter("outputFile.xml"));
Похожим образом можно записывать XML, используя новый API для загрузки и сохранения в спецификации DOM Level 3:
DOMWriter writer = new org.apache.xml.serialize.XMLSerializer();
writer.setNewLine("\r\n");
writer.setEncoding("UTF-8");
writer.writeNode(new FileOutputStream(new File("outputFile.xml")), myDocument);
Сперто тут http://www.ibm.com/developerworks/ru/library/x-xjavaforum5/index.html
Sunday, November 16, 2008
Tomcat 6 + Apache 2
This is the continuing guideline of "Tomcat 6 installation guide for Feisty". It is about the basic setting between tomcat 6 and apache 2 which make them work better, and I hope you enjoy it!
Step 1: install the libapache2-mod-jk
sudo apt-get install libapache2-mod-jk
Step 2: After that, check whether there is jk.load in the apache 2 modules
sudo ls /etc/apache2/mods-enabled/
If your result like this, that's fine:
cgi.load mod-security.conf php5.conf proxy.conf rewrite.load userdir.load
jk.load mod-security.load php5.load proxy.load userdir.conf
Step 3: Edit and save the two lines of workers.properties
sudo vi /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/share/tomcat6
workers.java_home=/usr/lib/Java6U1
Step 4: apache2.conf setting
Open and copy all the content in httpd_example_apache2.conf
sudo vi /usr/share/doc/libapache2-mod-jk/httpd_example_apache2.conf
then paste the content following the last line of apache2.conf
Step 5: Edit rc.local
sudo vi /etc/rc.local
export JDK_HOME=/usr/lib/Java6u1
export JAVA_HOME=/usr/lib/Java6u1
[Step 6: Restart apache2
sudo /etc/init.d/apache2 restart
Step 7: Restart tomcat
sudo /usr/share/tomcat6/bin/./shutdown.sh
sudo /usr/share/tomcat6/bin/./startup.sh
Now the basic setting is finished, then load your jsp files to usr/share/tomcat6/webapps/ROOT
Step 1: install the libapache2-mod-jk
sudo apt-get install libapache2-mod-jk
Step 2: After that, check whether there is jk.load in the apache 2 modules
sudo ls /etc/apache2/mods-enabled/
If your result like this, that's fine:
cgi.load mod-security.conf php5.conf proxy.conf rewrite.load userdir.load
jk.load mod-security.load php5.load proxy.load userdir.conf
Step 3: Edit and save the two lines of workers.properties
sudo vi /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/share/tomcat6
workers.java_home=/usr/lib/Java6U1
Step 4: apache2.conf setting
Open and copy all the content in httpd_example_apache2.conf
sudo vi /usr/share/doc/libapache2-mod-jk/httpd_example_apache2.conf
then paste the content following the last line of apache2.conf
Step 5: Edit rc.local
sudo vi /etc/rc.local
export JDK_HOME=/usr/lib/Java6u1
export JAVA_HOME=/usr/lib/Java6u1
[Step 6: Restart apache2
sudo /etc/init.d/apache2 restart
Step 7: Restart tomcat
sudo /usr/share/tomcat6/bin/./shutdown.sh
sudo /usr/share/tomcat6/bin/./startup.sh
Now the basic setting is finished, then load your jsp files to usr/share/tomcat6/webapps/ROOT
Saturday, September 20, 2008
Установка PyQT 4.3 и Python 2.5 на Windows
Весь материал содран с блога Шулепова Олега! Без его согласия. Мой блог создан исключительно для меня, как записная книжка! http://shulepov.blogspot.com/2008/04/pyqt-43-python-25-windows.html
Установка Python:
1. Идем на страницу http://www.python.org/download/ и там кликаем на пункт "Python 2.5.2 Windows installer"
2. Сохраняем файл и , после загрузки, запускаем установку
3. Все опции установки оставляем по умолчанию
Установка PyQt4:
1. Идем на страницу http://www.riverbankcomputing.co.uk/pyqt/download.php и там выбираем пункт "PyQt-Py2.5-gpl-4.3.3-2.exe"
2. Сохраняем
3. Запускаем установку и все ставим по умолчанию
Установка Python:
1. Идем на страницу http://www.python.org/download/ и там кликаем на пункт "Python 2.5.2 Windows installer"
2. Сохраняем файл и , после загрузки, запускаем установку
3. Все опции установки оставляем по умолчанию
Установка PyQt4:
1. Идем на страницу http://www.riverbankcomputing.co.uk/pyqt/download.php и там выбираем пункт "PyQt-Py2.5-gpl-4.3.3-2.exe"
2. Сохраняем
3. Запускаем установку и все ставим по умолчанию
Saturday, August 9, 2008
Subversion for WindowsXP (without Apache)
Что имеется:
1. Subversion 1.4.6
2. Loner XP 05.2008
3. NetBeans6.1
Установка и настройка.
1. Устанавливаем Subversion C:\Subversion
2. Создаем папку для хранилища C:\Repo
3. Регистрируем службу svn (есть в документации к Subversion)
sc create svn
binpath= “c:\subversion\bin\svnserve.exe ––service -r c:\repo”
displayname= “Subversion Repository”
depend= Tcpip
4. Запускаем сервис
net start svn
5. Создадим проект для рассмотрения настроек сервиса
svnadmin create с:/repo/testproj
6. Рассмотрим директивы в файле в c:\repo\testproj\conf\svnserve.conf
anon-access = none
auth-access = write
Задаются правила для авторизованных и анонимных пользовалей
none - ничего недьзя делать с проектом
read - можно читать проект
write - можно читать и писать в проект
*anon-access, auth-access и authz-db не перекрывают друг друга
password-db
указывает путь к файлу (абсолютный или относительный (относительно текущего каталога conf)) хранящему список пользователей и паролей. Если у вас для нескольких проектов этот файл имеет одно и то же значение, то можно положить его выше папок проектов и соответственно указать путь.
7. Структура файла с паролями
[users]
vasya = vasinpassword
petya = taT2d@1%
Тут все ясно, храняться пользователи и пароли.
authz-db - указывает на файл определяющий группы пользователей и уточняющий права доступа к конкретным папкам проекта
Последняя директива - realm - содержит имя проекта, которое должно быть уникальным. В принципе, можно его и не задавать.
8. Файл из директивы authz-db.
Опциями являются имена пользователей (описанных в password-db), а значениями - r (только чтение), rw (чтениеи и запись) и пустой строкой (ничего не разрешено). Если пользователь не упомянут в секции, считается, что доступ запрещен. Пример конфига:
[testproject:/some/directory]
vasya = rw
petya = r
Пользователь vasya имеет полный доступ к каталогу /some/directory, а petya - только на чтение. Чуть ниже можно дописать так:
[testproject:/some/directory/inside]
petya = rw
И petya получит доступ на запись в подкаталог inside каталога directory
По-умолчанию, к репозиторию доступ не имеет вообще никто. Чтобы разрешить пользователям хотя бы читать его содержимое, надо написать так:
[/]
* = r
Еще в файле можно определять группы. Они описываются в секции [groups]. В описании группы имя опции - имя группы, а значение - список пользователей в нее входящих через запятую. Группы могут включать в себя другие группы. Имя группы отличается от имени пользователя по знаку @ перед ее именем. Например:
[groups]
web-designers = petrov, ivanov
programmers = sidorov, vasilchenko
everyone = @web-designers, @programmers
Права группам выдаются так же, как и пользователям:
[testproject:/somewhere/something]
@programmers = rw
@web-designers = r
[testproject:/somewhere/elsewhere]
@web-designers = rw
sidorov = rw
9. А подключиться можно как по локальной машине, так и по ip svn://localhost/testproject
Отдельное спасибо блогу http://vingrad.ru/blogs/Alix/2008/05/27/ustanovka-i-nastroyka-subversion-pod-windows/
и мануалам ;-)
1. Subversion 1.4.6
2. Loner XP 05.2008
3. NetBeans6.1
Установка и настройка.
1. Устанавливаем Subversion C:\Subversion
2. Создаем папку для хранилища C:\Repo
3. Регистрируем службу svn (есть в документации к Subversion)
sc create svn
binpath= “c:\subversion\bin\svnserve.exe ––service -r c:\repo”
displayname= “Subversion Repository”
depend= Tcpip
4. Запускаем сервис
net start svn
5. Создадим проект для рассмотрения настроек сервиса
svnadmin create с:/repo/testproj
6. Рассмотрим директивы в файле в c:\repo\testproj\conf\svnserve.conf
anon-access = none
auth-access = write
Задаются правила для авторизованных и анонимных пользовалей
none - ничего недьзя делать с проектом
read - можно читать проект
write - можно читать и писать в проект
*anon-access, auth-access и authz-db не перекрывают друг друга
password-db
указывает путь к файлу (абсолютный или относительный (относительно текущего каталога conf)) хранящему список пользователей и паролей. Если у вас для нескольких проектов этот файл имеет одно и то же значение, то можно положить его выше папок проектов и соответственно указать путь.
7. Структура файла с паролями
[users]
vasya = vasinpassword
petya = taT2d@1%
Тут все ясно, храняться пользователи и пароли.
authz-db - указывает на файл определяющий группы пользователей и уточняющий права доступа к конкретным папкам проекта
Последняя директива - realm - содержит имя проекта, которое должно быть уникальным. В принципе, можно его и не задавать.
8. Файл из директивы authz-db.
Опциями являются имена пользователей (описанных в password-db), а значениями - r (только чтение), rw (чтениеи и запись) и пустой строкой (ничего не разрешено). Если пользователь не упомянут в секции, считается, что доступ запрещен. Пример конфига:
[testproject:/some/directory]
vasya = rw
petya = r
Пользователь vasya имеет полный доступ к каталогу /some/directory, а petya - только на чтение. Чуть ниже можно дописать так:
[testproject:/some/directory/inside]
petya = rw
И petya получит доступ на запись в подкаталог inside каталога directory
По-умолчанию, к репозиторию доступ не имеет вообще никто. Чтобы разрешить пользователям хотя бы читать его содержимое, надо написать так:
[/]
* = r
Еще в файле можно определять группы. Они описываются в секции [groups]. В описании группы имя опции - имя группы, а значение - список пользователей в нее входящих через запятую. Группы могут включать в себя другие группы. Имя группы отличается от имени пользователя по знаку @ перед ее именем. Например:
[groups]
web-designers = petrov, ivanov
programmers = sidorov, vasilchenko
everyone = @web-designers, @programmers
Права группам выдаются так же, как и пользователям:
[testproject:/somewhere/something]
@programmers = rw
@web-designers = r
[testproject:/somewhere/elsewhere]
@web-designers = rw
sidorov = rw
9. А подключиться можно как по локальной машине, так и по ip svn://localhost/testproject
Отдельное спасибо блогу http://vingrad.ru/blogs/Alix/2008/05/27/ustanovka-i-nastroyka-subversion-pod-windows/
и мануалам ;-)
Sunday, March 2, 2008
LAMP на Ubuntu
Обновляем репозитории
1. sudo su
2. apt-get update
3. apt-get upgrade // обновляется ВСЯ система. Так что, можете пропустить
Устанавливаем
0. sudo su
1. apt-get install mysql-server
2. mysqladmin -u root password YOUR_PASSWORD_HERE
3. apt-get install mysql-admin
4. apt-get install apache2
5. apt-get install php5 (если вы ставите php4- то пишите apt-get install php4)
6. /etc/init.d/apache2 restart (рестартуем апач)
7. apt-get install libapache2-mod-auth-mysql
8. apt-get install php5-mysql (если вы ставите php4 - то пишите apt-get install php4-mysql)
9. /etc/init.d/apache2 restart (снова рестартуем индейца)
10.sudo apt-get install phpmyadmin (Любимый и нелюбимый многими phpmyadmin)
11. apt-get install php5-curl (устанавливаем расширение cURL)
12. Включаем mod_rewrite
a) a2enmod rewrite
b) gedit /etc/apache2/sites-available/default (меняем на 12-ой строке “AllowOverride none” на "AllowOverride all")
c) /etc/init.d/apache2 restart (рестарт апача)
13. chmod 777 /var/www/ (меняем права на запись в директорию вашего web-сервера)
1. sudo su
2. apt-get update
3. apt-get upgrade // обновляется ВСЯ система. Так что, можете пропустить
Устанавливаем
0. sudo su
1. apt-get install mysql-server
2. mysqladmin -u root password YOUR_PASSWORD_HERE
3. apt-get install mysql-admin
4. apt-get install apache2
5. apt-get install php5 (если вы ставите php4- то пишите apt-get install php4)
6. /etc/init.d/apache2 restart (рестартуем апач)
7. apt-get install libapache2-mod-auth-mysql
8. apt-get install php5-mysql (если вы ставите php4 - то пишите apt-get install php4-mysql)
9. /etc/init.d/apache2 restart (снова рестартуем индейца)
10.sudo apt-get install phpmyadmin (Любимый и нелюбимый многими phpmyadmin)
11. apt-get install php5-curl (устанавливаем расширение cURL)
12. Включаем mod_rewrite
a) a2enmod rewrite
b) gedit /etc/apache2/sites-available/default (меняем на 12-ой строке “AllowOverride none” на "AllowOverride all")
c) /etc/init.d/apache2 restart (рестарт апача)
13. chmod 777 /var/www/ (меняем права на запись в директорию вашего web-сервера)
Saturday, February 16, 2008
Change *ubuntu
Install Ubuntu desktop:
1. #sudo apt-get install ubuntu-desktop
2. also change "gdm"
3. remove Kubuntu desktop
#sudo apt-get remove kubuntu-desktop kubuntu-artwork-usplash
This command remove some programs, but command "autoremove" remove all programs
#sudo apt-get autoremove
4. Restart X-server
Install Xubuntu desktop:
1. #sudo apt-get install xubuntu-desktop
2. change "gdm"
3. See point 3 and 4 from "Install Ubuntu desktop"
Install Kubuntu desktop
1. #sudo apt-get install kubuntu-desktop
2. change "kdm"
3. #sudo apt-get remove ubuntu-desktop
4. #sudo apt-get autoremove
1. #sudo apt-get install ubuntu-desktop
2. also change "gdm"
3. remove Kubuntu desktop
#sudo apt-get remove kubuntu-desktop kubuntu-artwork-usplash
This command remove some programs, but command "autoremove" remove all programs
#sudo apt-get autoremove
4. Restart X-server
Install Xubuntu desktop:
1. #sudo apt-get install xubuntu-desktop
2. change "gdm"
3. See point 3 and 4 from "Install Ubuntu desktop"
Install Kubuntu desktop
1. #sudo apt-get install kubuntu-desktop
2. change "kdm"
3. #sudo apt-get remove ubuntu-desktop
4. #sudo apt-get autoremove
Thursday, October 18, 2007
CSharp. The best tutorial
Congratulation you would soon be able to hack CsGL but there is one last step you should understand : interop (with C code).
You will need a C compiler, I advise gcc for windows called MinGW, it's free, it's good, it's GCC!
We will create 3 file:
echo.c
#include
#define DLLOBJECT __declspec(dllexport)
DLLOBJECT void writeln(char* s)
{
printf("%s\n", s);
}
echo.cs
using System;
using System.Runtime.InteropServices;
namespace HelloUtil
{
public class Echo {
[DllImport("echo.native.dll", CallingConvention=CallingConvention.Cdecl)]
static extern void writeln(string s);
string myString;
public Echo(string aString) {
myString = aString;
}
public void Tell() {
writeln(myString);
}
}
}
hello.cs
using System;
using HelloUtil;
public class Hello
{
public static void Main() {
Echo h = new Echo("Hello my 1st interop code !");
h.Tell();
}
}
Hehe, here you discover a completly new thing, Attribute.
"[DllImport(.." is an attribute.
You could tag any method/field/class with any number of attribute.
They generate extra information that could be used by anyone who could understand them.
This DllImport attribute is understand by the compiler and told him that the function below is in fact in a DLL whose name is "echo.native.dll". I add a calling convention parameter as the default .NET calling convention is __stdcall whereas, in C, it's __cdecl.
By the way, if you look for DllImport in the documentation, look for DllImportAttribute, because you remove "Attribute" to attribute classname when using them, it's like this.
And now let's compile this!
> csc /nologo /t:library /out:echo.dll echo.cs
> csc /nologo /out:hello.exe /r:echo.dll hello.cs
>
> rem "if the following line don't work, read bellow.."
> gcc -shared -o echo.native.dll echo.c
> strip echo.native.dll
the 2 last line (the gcc & strip command) are for building the "C-DLL".
If they don't work maybe gcc is not in a directory listed in your path environment variable ? check with:
%lt; echo %PATH%
Well it's probably not,anyway, so type, assumin mingc is in C:\MinGW:
set PATH=C:\MinGW;%PATH%
And try again... you sure it's not a syntax error ?
If it compile test it now: hello
Great isn't it ?
Now I should admit I didn't tell you all the truth. echo.dll and echo.native.dll are not the same kind of DLL. It's not just the language (C / C#) the C one is a plain executable full of, probably, x86 instruction, whereas the C# one is what MS call a portable executable.. anyway they are different.
If you install echo.dll in the GAC it wont work because it won't find echo.native.dll except if you put in into the PATH (like C:\Windows\System32).
In the same manner when you add the reference in VS.NET echo.native.dll is overlooked and your program won't work....
So either put the native one in your path or copy it in the debug/release directory of VS.NET.
Or do everything by hand (makefile? build.bat?) and put all your dll in you build directory, and everything work fine..
You will need a C compiler, I advise gcc for windows called MinGW, it's free, it's good, it's GCC!
We will create 3 file:
echo.c
#include
#define DLLOBJECT __declspec(dllexport)
DLLOBJECT void writeln(char* s)
{
printf("%s\n", s);
}
echo.cs
using System;
using System.Runtime.InteropServices;
namespace HelloUtil
{
public class Echo {
[DllImport("echo.native.dll", CallingConvention=CallingConvention.Cdecl)]
static extern void writeln(string s);
string myString;
public Echo(string aString) {
myString = aString;
}
public void Tell() {
writeln(myString);
}
}
}
hello.cs
using System;
using HelloUtil;
public class Hello
{
public static void Main() {
Echo h = new Echo("Hello my 1st interop code !");
h.Tell();
}
}
Hehe, here you discover a completly new thing, Attribute.
"[DllImport(.." is an attribute.
You could tag any method/field/class with any number of attribute.
They generate extra information that could be used by anyone who could understand them.
This DllImport attribute is understand by the compiler and told him that the function below is in fact in a DLL whose name is "echo.native.dll". I add a calling convention parameter as the default .NET calling convention is __stdcall whereas, in C, it's __cdecl.
By the way, if you look for DllImport in the documentation, look for DllImportAttribute, because you remove "Attribute" to attribute classname when using them, it's like this.
And now let's compile this!
> csc /nologo /t:library /out:echo.dll echo.cs
> csc /nologo /out:hello.exe /r:echo.dll hello.cs
>
> rem "if the following line don't work, read bellow.."
> gcc -shared -o echo.native.dll echo.c
> strip echo.native.dll
the 2 last line (the gcc & strip command) are for building the "C-DLL".
If they don't work maybe gcc is not in a directory listed in your path environment variable ? check with:
%lt; echo %PATH%
Well it's probably not,anyway, so type, assumin mingc is in C:\MinGW:
set PATH=C:\MinGW;%PATH%
And try again... you sure it's not a syntax error ?
If it compile test it now: hello
Great isn't it ?
Now I should admit I didn't tell you all the truth. echo.dll and echo.native.dll are not the same kind of DLL. It's not just the language (C / C#) the C one is a plain executable full of, probably, x86 instruction, whereas the C# one is what MS call a portable executable.. anyway they are different.
If you install echo.dll in the GAC it wont work because it won't find echo.native.dll except if you put in into the PATH (like C:\Windows\System32).
In the same manner when you add the reference in VS.NET echo.native.dll is overlooked and your program won't work....
So either put the native one in your path or copy it in the debug/release directory of VS.NET.
Or do everything by hand (makefile? build.bat?) and put all your dll in you build directory, and everything work fine..
Wednesday, October 10, 2007
vi (самый удобный редактор или его придумал больной мозг)
После установки редактора vi (в данном случае у меня установлен gVim - графический vi) попробуем поработать с ним. После открытия нужного нам текстового файла (я это делаю командой gvim mytxt.txt) мы не можем сразу работать с текстом, как например в notepad. Мы попадаем вначале в командный режим, а из командного режима мы можем перейти в режим набора текста и иже с ним. Как это все устроено.
Любая команда начинается с двоеточия (:), называемая еще ex-mode command
Esc - переход в командный режим
h - перемещение по тексту влево
j - перемещение по тексту вниз
k - перемещение по тексту вверх
l - перемещение по тексту вправо
0 (нуль) - перескочить на первый символ в строке
$ - перескочить на последний символ в строке
x - удаляет текущий символ под курсором
r (и другой символ) - заменить символ под курсором на другой символ
dd - удалить текущую строку текста
J - присоединить следующую строку к текущей строке
. - повторить команду
dw - удаление части текста от текущей позиции курсора до начала следующего слова
d) - удаление вплоть до следующего конца предложения
d} - удаление всего остатка абзаца
u - отменить операцию
i - переход в режим ввода текста перед текущим символом
I - ввод текста вначале текущей строки
а - переход в режим ввода текста после текущего символа
A - ввод текста в конце текущей строки
о, О - создать пустую строку после, перед текущей
с - замена (cc - текущую строку, с$ - текущую строку до конца строки, с0 (нуль) - от начала строки до курсора)
3w - перескочить вперед на 3 слова
CTRL + F - перейти на страницу вперед (можно PageDown)
CTRL + B - перейти на страницу назад (можно PageUp)
w, W - перемещение на первый символ следующего слова ( - для больших слов)
e, E - перемещение на следующий последний символ слова
b, B - cдвинуться на предыдущий первый символ слова
(, ) - переход на начало предыдущего или следующего предложения
{, } - переход на начало предыдущего или следующего параграфа
CTRL+W CTRL+W - переключение между буфферами
number G - перейти на строку с номером number
/text - искать текст text
n - повторить поиск в прямом (N- обратном) направлении
:q - выход из программы
:q! - выход из программы без вопроса о сохранении
:x, :wq - сохранить и выйти из программы
:w newtxt.txt - сохранить файл с именем newtxt.txt
:set tabstop=4 - установить табуляцию 4 символа
:sp - открыть новый буффер (можно указать, чтобы открыл новый буффер с файлом :sp new.txt)
Статья собрана и адаптирована в виде шпоргалки благодаря сайту Gentoo
Любая команда начинается с двоеточия (:), называемая еще ex-mode command
Esc - переход в командный режим
h - перемещение по тексту влево
j - перемещение по тексту вниз
k - перемещение по тексту вверх
l - перемещение по тексту вправо
0 (нуль) - перескочить на первый символ в строке
$ - перескочить на последний символ в строке
x - удаляет текущий символ под курсором
r (и другой символ) - заменить символ под курсором на другой символ
dd - удалить текущую строку текста
J - присоединить следующую строку к текущей строке
. - повторить команду
dw - удаление части текста от текущей позиции курсора до начала следующего слова
d) - удаление вплоть до следующего конца предложения
d} - удаление всего остатка абзаца
u - отменить операцию
i - переход в режим ввода текста перед текущим символом
I - ввод текста вначале текущей строки
а - переход в режим ввода текста после текущего символа
A - ввод текста в конце текущей строки
о, О - создать пустую строку после, перед текущей
с - замена (cc - текущую строку, с$ - текущую строку до конца строки, с0 (нуль) - от начала строки до курсора)
3w - перескочить вперед на 3 слова
CTRL + F - перейти на страницу вперед (можно PageDown)
CTRL + B - перейти на страницу назад (можно PageUp)
w, W - перемещение на первый символ следующего слова (
e, E - перемещение на следующий последний символ слова
b, B - cдвинуться на предыдущий первый символ слова
(, ) - переход на начало предыдущего или следующего предложения
{, } - переход на начало предыдущего или следующего параграфа
CTRL+W CTRL+W - переключение между буфферами
number G - перейти на строку с номером number
/text - искать текст text
n - повторить поиск в прямом (N- обратном) направлении
:q - выход из программы
:q! - выход из программы без вопроса о сохранении
:w newtxt.txt - сохранить файл с именем newtxt.txt
:set tabstop=4 - установить табуляцию 4 символа
:sp - открыть новый буффер (можно указать, чтобы открыл новый буффер с файлом :sp new.txt)
Статья собрана и адаптирована в виде шпоргалки благодаря сайту Gentoo
Wednesday, October 3, 2007
PC-BSD 1.4 (Хочу переключать раскладку)
Вышла новая версия десктопной ОС PC-BSD. Всю информацию можно узнать на сайтах
http://www.pcbsd.org
http://www.pcbsd.ru
Все хорошо, но в новой версии я не заметил файла XF86Config. В папке остался толькo xorg.conf.
По стечению обстоятельств, появился еще один способ смены раскладки, помимо описанного ранешь в этом блоге. Это способ наиболее приближен к Windows-настройкам (его мне подсказали с русского сообщества поддержки PC-BSD, но я его доработал и описал более подробно для всех). Итак начнем
Настройка раскладки
1. Переходим Центр настройки -> Региональные настройки -> Раскладка клавиатуры
2. На вкладке "Раскладка" удаляем "Английский язык", оставляя/добавляя только "Русский язык"
3. Ставим галочку рядом с пунктом "Включить латинскую раскладку"
4. Выбираем вариант раскладки winkeys.
5. На вкладке "Параметры переключения" убираем все галочки
6. На вкладке "Параметры XKB" ставим галочку рядом с пунктом "Использовать переключатели XKB",
7. Снимаем галочку "Игнорировать параметры системы"
8. Из списка выбираем ALT+SHIFT (переключает группу)
9. Принимаем изменения
10. Ставим из порторв kkbswitch (индикатор раскладки в трее) см. ниже
Установка kkbswitch из портов
1. Найдем собственно порт kkbswitch командой (чтобы точно знать адрес, я могу ошибаться)
$whereis kkbswitch
2. Установим kkbswitch
$cd /usr/ports/sysutils/kkbswitch
$make & make install
3. Перезагрузим систему.
Все. Радуемся жизни.
http://www.pcbsd.org
http://www.pcbsd.ru
Все хорошо, но в новой версии я не заметил файла XF86Config. В папке остался толькo xorg.conf.
По стечению обстоятельств, появился еще один способ смены раскладки, помимо описанного ранешь в этом блоге. Это способ наиболее приближен к Windows-настройкам (его мне подсказали с русского сообщества поддержки PC-BSD, но я его доработал и описал более подробно для всех). Итак начнем
Настройка раскладки
1. Переходим Центр настройки -> Региональные настройки -> Раскладка клавиатуры
2. На вкладке "Раскладка" удаляем "Английский язык", оставляя/добавляя только "Русский язык"
3. Ставим галочку рядом с пунктом "Включить латинскую раскладку"
4. Выбираем вариант раскладки winkeys.
5. На вкладке "Параметры переключения" убираем все галочки
6. На вкладке "Параметры XKB" ставим галочку рядом с пунктом "Использовать переключатели XKB",
7. Снимаем галочку "Игнорировать параметры системы"
8. Из списка выбираем ALT+SHIFT (переключает группу)
9. Принимаем изменения
10. Ставим из порторв kkbswitch (индикатор раскладки в трее) см. ниже
Установка kkbswitch из портов
1. Найдем собственно порт kkbswitch командой (чтобы точно знать адрес, я могу ошибаться)
$whereis kkbswitch
2. Установим kkbswitch
$cd /usr/ports/sysutils/kkbswitch
$make & make install
3. Перезагрузим систему.
Все. Радуемся жизни.
Thursday, August 16, 2007
Модуль "Фотогаллерея"
На днях пришла идея для CMS L.F.E. написать модуль для работы с фотографиями. Изучив подобные решения, я накидал небольшое ТЗ, что должен выполнять данный модуль. Вот требования к нему:
1. Локальная загрузка фотографий
2. Автоматическое изменение фотографий под сайт
3. Предварительный просмотр фотографий на сайте
4. Комментарии к фотографиям
5. Счетчик просмотров фотографий
6. Оценка фотографий
7. Категории для фотографий. Комментарии категорий (класс также должен быть и для файлов)
1. Локальная загрузка фотографий
2. Автоматическое изменение фотографий под сайт
3. Предварительный просмотр фотографий на сайте
4. Комментарии к фотографиям
5. Счетчик просмотров фотографий
6. Оценка фотографий
7. Категории для фотографий. Комментарии категорий (класс также должен быть и для файлов)
Subscribe to:
Posts (Atom)