Некоторое время назад я опубликовал статью «Простейший редактор BB кодов». В запале обсуждения пообещал выполнить редактор в виде плагина. Вчера у меня выдалось несколько свободных часов, вот выполняю обещание.
Дмитрий Кожевин @Stinkie
User
Memcached. Как найти ключи по паттерну?
6 min
9.5KДоброе утро|день|вечер|ночь, %username%!
При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»
При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»
+17
Воспроизведение речи на пианино
1 min
4.3KКомпозитор Peter Ablinger оцифровал запись детской речи и запрограммировал механическое пианино для ее воспроизведения.
Получилось неоднозначно. Местами похоже на речь, местами можно разобрать слова. В любом случае было интересно и необычно.
via gizmodo
Получилось неоднозначно. Местами похоже на речь, местами можно разобрать слова. В любом случае было интересно и необычно.
via gizmodo
+80
Архитектура предметной области в CMF/CMS системах
6 min
3.9KПрактически любая информационная система характеризуется наличием системы хранения и оперирования данными. Возьмем, к примеру, обычные веб-сайты. Для их создания обычно используются какие-либо готовые системы (фреймворки или уже готовые CMS), в которых изначально уже заложена какая-то концепция по работе с данными, установившаяся предметная область. Обычно, если разработчик хочется добавить на сайте раздел новостей, он добавляет в интерфейсе CMS компонент, информационный блок, шаблон и т.п. Суть всех этих конструкций одна — создать сущность в БД для хранения (либо каком-то ином хранилище). В итоге имеется реляционная база данных и, зачастую, какой-то объектно-ориентированный обвес, реализующий связку объект-атрибуты-свойства-методы — реализуется предметная область.
Ниже пойдет речь об одном из вариантов архитектуры предметной области. Статья базируется на опыте работы в компании ADV, которая применяет подобные методы в разработке веб-проектов. Сложность изложенного материала позволяет понять его не только разработчикам ПО, но и веб-мастерам, которым надо периодически дорабатывать существующие веб-проекты, добавляя в них новые данные.
Самые простые системы позволяют лишь организовать хранилище, к которому разработчик в дальнейшем обращается и делает всю необходимую работу по обработке данных сам. В таком хранилище есть лишь объект, поля и данные. В более продвинутых системах между объектами появляются связи. Следующий уровень развития — взаимодействие объектов (триггеры, методы и т.п.), а так же наличие программной подсистемы, снимающую с разработчика часть забот по обработке данных.
Ниже пойдет речь об одном из вариантов архитектуры предметной области. Статья базируется на опыте работы в компании ADV, которая применяет подобные методы в разработке веб-проектов. Сложность изложенного материала позволяет понять его не только разработчикам ПО, но и веб-мастерам, которым надо периодически дорабатывать существующие веб-проекты, добавляя в них новые данные.
Самые простые системы позволяют лишь организовать хранилище, к которому разработчик в дальнейшем обращается и делает всю необходимую работу по обработке данных сам. В таком хранилище есть лишь объект, поля и данные. В более продвинутых системах между объектами появляются связи. Следующий уровень развития — взаимодействие объектов (триггеры, методы и т.п.), а так же наличие программной подсистемы, снимающую с разработчика часть забот по обработке данных.
+39
+9
Линус Торвальдс о GIT на Google Talks [видеоперевод 8 частей]
1 min
4.1KДва года назад Линус Торвальдс рассказал представителям Google об использовании GIT (распределённой системы контроля версий) для ядра Linux. Посчитав, что многие могут пропустить эту интересную лекцию по причине незнания языка, я осмелился озвучить её по-русски.
а так же плейлист целиком.
а так же плейлист целиком.
+97
25-летний Цукерберг заработал второй миллиард
1 min
1.7KЖурнал Forbes опубликовал свежий список самых богатых людей планеты Forbes 400.
Первое место удерживает всем известный Билл Гейтс, который из-за кризиса потерял $7 млрд, и теперь у него осталось около $50 млрд. Билл Гейтс возглавляет список уже 14 лет с одним небольшим перерывом в прошлом году.
Мировая депрессия подкосила благосостояние 80% богатейших людей. Общая ценность Forbes 400 упала на 20%, а количество миллиардеров в мире снизилось с 489 до 391.
Средний возраст мировых финансовых мешков составляет 65,8 лет. Но есть одно исключение. Главная сенсация Forbes 400 — основатель социальной сети Facebook и недавний студент Марк Цукерберг, которому недавно исполнилось всего двадцать пять.
Марк нарастил стоимость своё состояние с прошлогодних $1,5 млрд до $2 млрд (при общей оценке Facebook в $10 млрд) и добрался до 158 места. В свои 25 лет он самый молодой в списке миллиардеров, причём моложе 35-ти лет в списке Forbes больше нет никого.
Первое место удерживает всем известный Билл Гейтс, который из-за кризиса потерял $7 млрд, и теперь у него осталось около $50 млрд. Билл Гейтс возглавляет список уже 14 лет с одним небольшим перерывом в прошлом году.
Мировая депрессия подкосила благосостояние 80% богатейших людей. Общая ценность Forbes 400 упала на 20%, а количество миллиардеров в мире снизилось с 489 до 391.
Средний возраст мировых финансовых мешков составляет 65,8 лет. Но есть одно исключение. Главная сенсация Forbes 400 — основатель социальной сети Facebook и недавний студент Марк Цукерберг, которому недавно исполнилось всего двадцать пять.
Марк нарастил стоимость своё состояние с прошлогодних $1,5 млрд до $2 млрд (при общей оценке Facebook в $10 млрд) и добрался до 158 места. В свои 25 лет он самый молодой в списке миллиардеров, причём моложе 35-ти лет в списке Forbes больше нет никого.
+93
Эмулятор Радио-86РК на Javascript
2 min
8.4KКогда деревья были большими, а проблемы просто громадными, существовал такой компьютер — Радио-86РК. Многие программисты на территории бывшего СССР начали свой путь с этой машины.
Но время шло, и РК плавно ушел в небытие. Но для особых фанатов существуют эмуляторы. А в современном мире Web 2.0 вообще модно, чтобы все работало прямо в браузере. А так как правильные браузеры типа Google Chrome предоставляют все возрастающую скорость JavaScript, то подобная мода весьма оправдана. А как результат, даже эмуляторы процессоров теперь можно запускать прямо в браузере (недавно на Хабре была тема про эмулятор Спектрума).
Я так вдохновился тем Спектрумовским эмулятором, что за пару дней перенес свой старый эмулятор РК на платформу JavaScript.
+72
Версия 1.1 alpha
2 min
569Поздравляю c только что вышедшим альфа-релизом Yii 1.1!
Прошел почти год со времени выпуска альфы 1.0. Так что новый релиз можно назвать событием года в мире разработки Yii. По заявлению разработчиков эта версия включает множество новых примечательных особенностей и так уже мощного фреймворка.
Прошел почти год со времени выпуска альфы 1.0. Так что новый релиз можно назвать событием года в мире разработки Yii. По заявлению разработчиков эта версия включает множество новых примечательных особенностей и так уже мощного фреймворка.
+14
Однострочные программы на Perl
7 min
39KВведение
Я собираюсь рассказать об однострочных программах на Perl. Если вы овладете однострочным Perl`ом, то можете сэкономить кучу времени (я экономлю).
Цель поста — показать как Perl можно использовать заместо find, grep, awk, sed. В конце поста будет написано зачем это надо.
+86
Пути саморазвития студента — взгляд после выпуска
4 min
6.8KМой комментарий к вот этому посту разросся до отдельной записи.
Сразу расскажу, что может дать предлагаемый подход и откуда он появился.
Студенчество — отличная пора, когда есть достаточно времени, чтобы стать отличным специалистом. Это становление всегда занимает определенное время. Скажем, 3-5 лет. Чем раньше начнешь — тем раньше станешь. Очень важно, на мой взгляд, не потерять время.
В программисте важны не технологии, которыми он владеет, а его мышление и опыт. Чем больше технологий «пощупает» программист — тем шире его кругозор, тем больше подходов он знает, тем легче освоит что-то новое.
Мой подход может помочь стать или очень востребованным в организациях специалистом или же наоборот — освободиться от организаций — стать фрилансером или предпринимателем.
Описанное ниже — это мой личный опыт и опыт лучших моих однокурсников, избавленный от некоторых граблей.
Итак, мои советы студенту-айтишнику.
Предполагается, что студент пошел на 1й курс после школы и практических навыков не имеет (а вот за то, что он еще не имеет практических навыков — он должен получить ложкой в лоб за раздолбайство!).
Также предполагается, что аспирантура и научная деятельность студента не интересует, а терять время на академы студент не собирается.
Сразу расскажу, что может дать предлагаемый подход и откуда он появился.
Студенчество — отличная пора, когда есть достаточно времени, чтобы стать отличным специалистом. Это становление всегда занимает определенное время. Скажем, 3-5 лет. Чем раньше начнешь — тем раньше станешь. Очень важно, на мой взгляд, не потерять время.
В программисте важны не технологии, которыми он владеет, а его мышление и опыт. Чем больше технологий «пощупает» программист — тем шире его кругозор, тем больше подходов он знает, тем легче освоит что-то новое.
Мой подход может помочь стать или очень востребованным в организациях специалистом или же наоборот — освободиться от организаций — стать фрилансером или предпринимателем.
Описанное ниже — это мой личный опыт и опыт лучших моих однокурсников, избавленный от некоторых граблей.
Итак, мои советы студенту-айтишнику.
Предполагается, что студент пошел на 1й курс после школы и практических навыков не имеет (а вот за то, что он еще не имеет практических навыков — он должен получить ложкой в лоб за раздолбайство!).
Также предполагается, что аспирантура и научная деятельность студента не интересует, а терять время на академы студент не собирается.
+60
Были получены исходники 3300 глобальных интернет-проектов
5 min
276KПару месяцев назад нами (2Товарища и Антон Исайкин) была обнаружена уязвимость, присущая в основном большим интернет-проектам (вроде Рамблера, Мейла, Яндекса, Оперы и пр.). Удалось получить доступ к файловым структурам известнейших сайтов (в общей сложности 3320 сайтов) и в ряде случаев их полные исходные коды.
+1154
Feature Driven Development для веб-разработчиков
4 min
13KЛет 10 назад веб-проекты по большей части были статическими, а технологический процесс порой — прост до безобразия. Теперь грань между веб-приложениями и настольными приложениями стирается, функциональная сложность веб-проектов растет. Это диктует новые требования к веб-разработке. Обычная ситуация нынче, в эпоху «удиви меня 2.0», — когда проект долгосрочный, в нем задействовано множество специалистов (и не специалистов также), щедро орошающих многострадальный product backlog новыми идеями и целями, как до начала разработки, так и после. Как вы понимаете, цели и истории мутируют, а вместе с ними и задачи. Предварительная оценка по времени теряет свою целесообразность. И т.д. и т.п. Очевидно, нужна специальная методология разработки. Можно попробовать приобщиться к Rational Unified Process (RUP) или Process Mentor. Однако, не стоит. Среди столь популярных ныне Agile методик имеется то, что нам надо — Feature Driven Development (FDD).
+6
Защищаемся от HTTP DDoS и прочих Хабраэффектов
5 min
10KПростой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
+144
Perl и GUI. Работа с меню
3 min
3.1KОбзор виджетов Tk, я начну с рассмотрения главного меню c учетом особенностей различных ОС.
Для начала создадим заготовку для нашего приложения:
Все как обычно, File, Edit, Help. (меню каскадное). Новый объект создается с помощью метода new_menu(); (подобно контейнеру)
Добавление осуществляется через add_cascade(), где
-label — это заголовок меню.
-menu — виджет
-underline — индекс буквы подчеркивания. Необходимо для быстрой навигации с помощью кнопки Alt+буква (нумерация идет с 0)
смотрим, что получилось.
Толку от пустого меню нету, поэтому «набьем» его командами
Для начала создадим заготовку для нашего приложения:
#!/usr/bin/perl -w use strict; use Tkx; our $PROGNAME = 'app'; our $VERSION = '0.1'; <habracut> my $windowingsystem = Tkx::tk_windowingsystem(); my $IS_AQUA = ($windowingsystem eq 'aqua'); # Учитывая, что имена некоторых кнопок могут различаться, # в OSX это Control, в Win/X11 это Ctrl, добавим еще несколько переменных # (пригодится для хоткеев) my $plat_acc_ctrl = ($^O eq 'darwin') ? ('Control-') : ('Ctrl+'); my $plat_evt_ctrl = ($^O eq 'darwin') ? ('Control-') : ('Control-'); # Главное окно. my $mw = Tkx::widget->new('.'); Tkx::tk( appname => $PROGNAME ); Tkx::wm_minsize( $mw => qw(320 200) ); # новое меню прикрепляется с помощью параметра -menu $mw->configure( -menu => make_menu( $mw ), ); Tkx::MainLoop; 1; sub on_quit { Tkx::tk___messageBox( -message => 'Goodbye ;]' ); exit; } sub show_about { Tkx::tk___messageBox( -message => "$PROGNAME $VERSION" ); } sub make_menu { my $mw = shift || return; # По умолчанию, все меню выглядит подобно в GIMP, их можно открепить # Поэтому, выключим данную опцию Tkx::option_add('*Menu.tearOff', 0) # ... продолжение ниже return $m; }
Все как обычно, File, Edit, Help. (меню каскадное). Новый объект создается с помощью метода new_menu(); (подобно контейнеру)
my $m = $mw->new_menu(); # Верхний уровень my $fm = $m->new_menu(); # File my $em = $m->new_menu(); # Edit # А теперь, добавим наши пункты в верхний уровень $m->add_cascade( -label => 'File', -menu => $fm, -underline => 0 ); $m->add_cascade( -label => 'Edit', -menu => $em, -underline => 0 );
Добавление осуществляется через add_cascade(), где
-label — это заголовок меню.
-menu — виджет
-underline — индекс буквы подчеркивания. Необходимо для быстрой навигации с помощью кнопки Alt+буква (нумерация идет с 0)
смотрим, что получилось.
Толку от пустого меню нету, поэтому «набьем» его командами
# Меню File $fm->add_command( -label => 'Do something', -underline => 0, -command => sub { }, ); # разделитель $fm->add_separator(); $fm->add_command( -label => 'Quit', -underline => 0, -accelerator => "${plat_acc_ctrl}Q", -command => [\&on_quit], ); Tkx::bind( all => "<${plat_evt_ctrl}q>" => [\&on_quit] ); # Меню Edit $em->add_command( -label => 'Cut', -underline => 2, -accelerator => "${plat_acc_ctrl}X", -command => sub { Tkx::event_generate(Tkx::focus(), '<
+17
PHPConf 2009 — программа опубликована
4 min
400Программа Web Architect WorkShop Day будет опубликована 4сентября. Планируется провести 3 потока мастер-классов: аналитика и архитектрура, управление качеством, технологии и секреты мастерства.
Льготная регистрация продлена до 10 сентября. Не опоздайте уже 30% мест занято
+12
Список полезных инструментов для php разработчика
10 min
148KTranslation
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
+186
Continuous integration для php
9 min
14KЭту статью написал мой добрый приятель и бывший коллега fred, работающий в команде программистов над большим и сложным проектом, который должен работать 24х7. Если кто-то решит пригласить его на хабр — с удовольствием вышлю его email по хабрапочте. Пожелания и комментарии приветствуются, а я обязуюсь передавать ответы автора в меру своих возможностей.
Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
+72
Редкие фичи nginx: random_index
2 min
3.3KРешил осуществить давнюю мечту, и написать про некоторые модули nginx, которые используются довольно редко. Сегодня речь пойдёт про random_index_module.
+42
Серия скринкастов по VIM
1 min
5.8KЕсли вы хотели начать работать с VIM, но вас что-то останавливало, то перед вами прекрасная возможность начать снова.
Ну а если вы уже продвинутый Vimmer то для вас тоже найдётся что посмотреть.
Ну а если вы уже продвинутый Vimmer то для вас тоже найдётся что посмотреть.
+47
Information
- Rating
- Does not participate
- Location
- Щелково, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity