twixed.ru huh… nothing interesting here

22Янв/154

Модуль `Size option` для OpenCart 2.0.1.1

Быстрым набегом отмечу здесь мой первый модуль для OpenCart 2.0: Size option.
В то время, как мне приходилось дорабатывать сайт под управлением OpenCart 1.5, я совсем не озадачивался использованием VQMod, и вносил изменения прямо в core файлы. Я знаю, что это плохая привычка, но тратить время на освоение этого патчера реального времени не хотелось. Сейчас же, когда я начал работу над очередным сайтом с нуля, я решил использовать последнюю версию OC, и делать это правильно.
Первой же задачей, которую OC не мог реализовать из коробки - ввод произвольных размеров продукта, и вычисление финальной стоимости от площади. Сперва я, конечно, методом проб и ошибок, вносил изменения прямо в файлы ядра, но, получив на каком-то этапе удовлетворяющий моим требованиям код, вернул их в начальное состояние, а все необходимые изменения выделил в модуль для OCMod.

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Метки записи: Читать полностью
8Июл/120

Памятка по установке proFTPd с авторизацией через MySQL

Ниже приведен простейший вариант установки и настройки proftpd-mod-mysql. Ничего лишнего, лишь инструкции:

  1. Устанавливаем пакеты
    apt-get install mysql-server proftpd-mod-mysql

  2. Добавляем в систему  пользователя FTP
    groupadd -g 5500 ftp
    useradd -u 5500 -s /bin/false -d /bin/null -c "FTP user" -g ftp ftp

  3. Запускаем скуль, и создаём таблицы/пользователей
    mysql -u root -p
    
    CREATE DATABASE ftp;
    GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
    GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;
    
    CREATE TABLE `users` (
    `id` int(10) unsigned not null auto_increment,
    `name` varchar(256) default 'Unnamed user',
    `userid` varchar(32) not null,
    `passwd` varchar(32) not null,
    `uid` smallint(6) not null default '5500',
    `gid` smallint(6) not null default '5500',
    `homedir` varchar(255) not null,
    `shell` varchar(16) not null default '/sbin/nologin'
    PRIMARY KEY (`id`),
    UNIQUE KEY (`userid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
    
    INSERT INTO `users` (`id`, `name`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`) VALUES ('1', 'Mikhailov Anton', 'twix', 'uberpassword', '5500', '5500', '/home/ftp/twix/', '/sbin/nologin');

  4. Настраиваем proFTPd
    а) в конфиге /etc/proftpd/proftpd.conf раскомментируем строки

    DefaultRoot ~
    RequireValidShell off
    Include /etc/proftpd/sql.conf

    б) в конфиге /etc/proftp/modules.conf раскомментируем строки

    LoadModule mod_sql.c
    LoadModule mod_sql_mysql.c

    в) /etc/proftpd/sql.conf

    SQLBackend mysql
    SQLEngine on
    SQLAuthenticate on
    SQLAuthTypes Plaintext
    SQLConnectInfo ftp@localhost proftpd password
    SQLUserInfo users userid passwd uid gid homedir shell

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Метки записи: , Нет комментариев
22Фев/123

Установка Flash Develop под Ubuntu

Не растекаясь мыслью по древу, установка FlashDevelop по шагам:

  1. Устанавливаем wine: sudo apt-get install wine
  2. Качаем winetricks (контекстное меню - "Сохранить ссылку как")
  3. Делаем его исполняемым: chmod +x winetricks
  4. Скачиваем и запускаем скрипт установки:
    wget -N http://int3ractive.com/get/fd4winemod
    chmod +x fd4winemod
    sh ./fd4winemod
  5. Следуем инструкциям
  6. ...?
  7. Profit!

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Метки записи: , , , 3 Комментарии
6Фев/120

ActionScript convert(parse) String to Boolean value

Маленькая заметочка, буквально на полях:

Конвертация текстового значения в булево выполняется простой проверкой на соответствие одному из возможных значений:

var str:String = new String();
str = "true";
trace( str == "true" ); // выведет булево true, так как строка совпала
str = "false";
trace( str == "true" ); // выведет булево false
trace( str.toUppercase() == "TRUE" ); // регистронезависимая проверка

У этого способа, по сравнению, например, с целочисленным parseInt, есть один недостаток - он будет возвращать false даже если строка вообще не является текстовым представлением значения булевой переменной.

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

16Дек/110

MetroUI-like scrolling

Два месяца этот примерчик ждал своей очереди, и «пылился» на винче без дела. И, наконец-то, я собрался духом, и выкладываю его на всеобщее обозрение и порицание.
В этой статье я поделюсь своим методом реализации некоего подобия интерфейса Metro UI, написанного, как говорится, «на коленке» на C# под WPF. В примере используется .Net framework 4, но все описанное можно без изменений использовать в версиях 3 и 3.5. Framework 2.0 не умеет WPF, но реализованный здесь алгоритм можно запросто перенести на WinForms (правда, на VCL отрисовка «плывущих» контролов безбожно тормозит и уродует форму, даже если DoubleBuffered:=true, а на каждый тик таймера вызываются Application.ProcessMessages и/или Refresh). WPF был выбран основным для демонстрации этого алгоритма потому что это «модно, стильно, молодежно»… шучу. Конечно, он был выбран потому, что это удобно, быстро и красиво.
Итак, заинтересованных прошу под кат…

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Метки записи: , , Читать полностью
12Окт/110

Основные системные показатели на PHP

В этой статье я поделюсь своими способами извлечения и отображения на сайте системных показателей, как то: текущая загрузка процессора, потребление системной памяти и свапа, и количество занятого пространства на НЖМД.

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Метки записи: , , Читать полностью
14Сен/110

Windows 8 first impressions

Скачал, установил в VirtualBox и немного попробовал Windows 8. Вот мои первые впечатления:
Несмотря на то, что система лишь на стадии Developers Build, ей вполне можно пользоваться. Правда, как система для десктопа она не подходит - заточена под пальцы. Однако, радует подача информации и продуманность именно пальцеориентированного интерфейса.
Несмотря на работу в виртуальной среде, без необходимых драйверов, и с эмуляцией лишь минимально требуемого железа (1.6 ГГц, 2 ядра, 2 Гб памяти, 16 Гб НЖМД), пользоваться установленными приложениями приятно и удобно.
В плане интерфейса изменения грандиозные! И не только с точки зрения настольной системы, но и с точки зрения системы планшетной. Изучать и привыкать придется ооочень долго. Но от будущего не убежать...
Да... В скором времени после появления ОС на прилавках, начинаем искать китайские поделки под ее управлением. Они, думаю, быстро смекнут, что их будут расхватывать как горячие пирожки...

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Связано с категорией: Без рубрики Нет комментариев
13Сен/110

С днем программиста!

Вот и наступил долгожданный 256-й день в этом году. В связи с этим, поздравляю всех сочинителей и чинителей программ с их профессиональным праздником, желаю отсутствия багов и интересных задач. Много не пейте!

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Связано с категорией: Без рубрики Нет комментариев
6Сен/111

«Умная самоклейка» на окна

Идея, которую я разместил в конкурсе трансформаций от ASUS, родилась в моей голове несколько лет назад, когда я впервые увидел виджеты в KDE. Тогда я подумал, что было бы неплохо выводить полезную информацию на плоскостях, которые не используются - на окнах. Ну, подумал, и забыл. Ничего необычного. Позже, когда стали проскакивать новости о гибких жидкокристаллических экранах, эта идея вновь всплыла, но была отброшена как нерабочая из-за невозможности эти дисплеи найти в продаже, и их, вероятно, огромной стоимости. Сейчас, по прошествии времени, я предполагаю, что технологии вполне позволят сделать за относительно небольшие деньги то, о чем речь пойдет ниже...

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Связано с категорией: Без рубрики Читать полностью
10Авг/110

Интерактивные поля ввода при помощи javascript

Маленький пост о том, как сделать поля ввода более интересными с точки зрения функциональности.
Для примера возьмем номер мобильного телефона. Допустим, на нашем сайте человек должен оставить номер своего мобильника для обратной связи. Использование "голого" input'а чревато внесением в это поле любой текстовой информации - от одной буквы и до строчки из библии. Если мы просим человека ввести номер своего телефона, то и ожидать в серверном скрипте мы тоже будем номер. Но что делать, если вместо него пользователь введет "Здесь был Вася"? А если номер телефона используется в автоматической обработке, завязанной на номере телефона? Тогда в голову приходит мысль ограничить ввод, подогнав его под некий шаблон, с которым нам дальше будет удобно работать...

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail Post to LinkedIn

Метки записи: Читать полностью