Pull to refresh
1
0
Дмитрий Кожевин @Stinkie

User

Send message

Мой редактор BB кодов

Reading time1 min
Views3.3K
Некоторое время назад я опубликовал статью «Простейший редактор BB кодов». В запале обсуждения пообещал выполнить редактор в виде плагина. Вчера у меня выдалось несколько свободных часов, вот выполняю обещание.
Читать дальше →
Total votes 56: ↑41 and ↓15+26
Comments25

Memcached. Как найти ключи по паттерну?

Reading time6 min
Views9.5K
Доброе утро|день|вечер|ночь, %username%!

При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»

Читать дальше →
Total votes 61: ↑39 and ↓22+17
Comments44

Воспроизведение речи на пианино

Reading time1 min
Views4.3K
Композитор Peter Ablinger оцифровал запись детской речи и запрограммировал механическое пианино для ее воспроизведения.

Получилось неоднозначно. Местами похоже на речь, местами можно разобрать слова. В любом случае было интересно и необычно.



via gizmodo
Total votes 94: ↑87 and ↓7+80
Comments64

Архитектура предметной области в CMF/CMS системах

Reading time6 min
Views3.9K
Практически любая информационная система характеризуется наличием системы хранения и оперирования данными. Возьмем, к примеру, обычные веб-сайты. Для их создания обычно используются какие-либо готовые системы (фреймворки или уже готовые CMS), в которых изначально уже заложена какая-то концепция по работе с данными, установившаяся предметная область. Обычно, если разработчик хочется добавить на сайте раздел новостей, он добавляет в интерфейсе CMS компонент, информационный блок, шаблон и т.п. Суть всех этих конструкций одна — создать сущность в БД для хранения (либо каком-то ином хранилище). В итоге имеется реляционная база данных и, зачастую, какой-то объектно-ориентированный обвес, реализующий связку объект-атрибуты-свойства-методы — реализуется предметная область.

Ниже пойдет речь об одном из вариантов архитектуры предметной области. Статья базируется на опыте работы в компании ADV, которая применяет подобные методы в разработке веб-проектов. Сложность изложенного материала позволяет понять его не только разработчикам ПО, но и веб-мастерам, которым надо периодически дорабатывать существующие веб-проекты, добавляя в них новые данные.

Самые простые системы позволяют лишь организовать хранилище, к которому разработчик в дальнейшем обращается и делает всю необходимую работу по обработке данных сам. В таком хранилище есть лишь объект, поля и данные. В более продвинутых системах между объектами появляются связи. Следующий уровень развития — взаимодействие объектов (триггеры, методы и т.п.), а так же наличие программной подсистемы, снимающую с разработчика часть забот по обработке данных.
Читать дальше →
Total votes 51: ↑45 and ↓6+39
Comments58

Линус Торвальдс о GIT на Google Talks [видеоперевод 8 частей]

Reading time1 min
Views4.1K
Два года назад Линус Торвальдс рассказал представителям Google об использовании GIT (распределённой системы контроля версий) для ядра Linux. Посчитав, что многие могут пропустить эту интересную лекцию по причине незнания языка, я осмелился озвучить её по-русски.



а так же плейлист целиком.
пояснения...
Total votes 103: ↑100 and ↓3+97
Comments42

25-летний Цукерберг заработал второй миллиард

Reading time1 min
Views1.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 больше нет никого.
Total votes 111: ↑102 and ↓9+93
Comments153

Эмулятор Радио-86РК на Javascript

Reading time2 min
Views8.4K


Когда деревья были большими, а проблемы просто громадными, существовал такой компьютер — Радио-86РК. Многие программисты на территории бывшего СССР начали свой путь с этой машины.

Но время шло, и РК плавно ушел в небытие. Но для особых фанатов существуют эмуляторы. А в современном мире Web 2.0 вообще модно, чтобы все работало прямо в браузере. А так как правильные браузеры типа Google Chrome предоставляют все возрастающую скорость JavaScript, то подобная мода весьма оправдана. А как результат, даже эмуляторы процессоров теперь можно запускать прямо в браузере (недавно на Хабре была тема про эмулятор Спектрума).

Я так вдохновился тем Спектрумовским эмулятором, что за пару дней перенес свой старый эмулятор РК на платформу JavaScript.

подробности
Total votes 78: ↑75 and ↓3+72
Comments51

Версия 1.1 alpha

Reading time2 min
Views569
Поздравляю c только что вышедшим альфа-релизом Yii 1.1!

Прошел почти год со времени выпуска альфы 1.0. Так что новый релиз можно назвать событием года в мире разработки Yii. По заявлению разработчиков эта версия включает множество новых примечательных особенностей и так уже мощного фреймворка.
Что же нового в Yii 1.1?
Total votes 32: ↑23 and ↓9+14
Comments13

Однострочные программы на Perl

Reading time7 min
Views39K

Введение


Я собираюсь рассказать об однострочных программах на Perl. Если вы овладете однострочным Perl`ом, то можете сэкономить кучу времени (я экономлю).

Цель поста — показать как Perl можно использовать заместо find, grep, awk, sed. В конце поста будет написано зачем это надо.
Читать дальше →
Total votes 104: ↑95 and ↓9+86
Comments45

Пути саморазвития студента — взгляд после выпуска

Reading time4 min
Views6.8K
Мой комментарий к вот этому посту разросся до отдельной записи.

Сразу расскажу, что может дать предлагаемый подход и откуда он появился.

Студенчество — отличная пора, когда есть достаточно времени, чтобы стать отличным специалистом. Это становление всегда занимает определенное время. Скажем, 3-5 лет. Чем раньше начнешь — тем раньше станешь. Очень важно, на мой взгляд, не потерять время.

В программисте важны не технологии, которыми он владеет, а его мышление и опыт. Чем больше технологий «пощупает» программист — тем шире его кругозор, тем больше подходов он знает, тем легче освоит что-то новое.

Мой подход может помочь стать или очень востребованным в организациях специалистом или же наоборот — освободиться от организаций — стать фрилансером или предпринимателем.

Описанное ниже — это мой личный опыт и опыт лучших моих однокурсников, избавленный от некоторых граблей.

Итак, мои советы студенту-айтишнику.
Предполагается, что студент пошел на 1й курс после школы и практических навыков не имеет (а вот за то, что он еще не имеет практических навыков — он должен получить ложкой в лоб за раздолбайство!).
Также предполагается, что аспирантура и научная деятельность студента не интересует, а терять время на академы студент не собирается.
Читать дальше →
Total votes 124: ↑92 and ↓32+60
Comments216

Были получены исходники 3300 глобальных интернет-проектов

Reading time5 min
Views276K
Пару месяцев назад нами (2Товарища и Антон Исайкин) была обнаружена уязвимость, присущая в основном большим интернет-проектам (вроде Рамблера, Мейла, Яндекса, Оперы и пр.). Удалось получить доступ к файловым структурам известнейших сайтов (в общей сложности 3320 сайтов) и в ряде случаев их полные исходные коды.
Читать дальше →
Total votes 1226: ↑1190 and ↓36+1154
Comments909

Feature Driven Development для веб-разработчиков

Reading time4 min
Views13K
Лет 10 назад веб-проекты по большей части были статическими, а технологический процесс порой — прост до безобразия. Теперь грань между веб-приложениями и настольными приложениями стирается, функциональная сложность веб-проектов растет. Это диктует новые требования к веб-разработке. Обычная ситуация нынче, в эпоху «удиви меня 2.0», — когда проект долгосрочный, в нем задействовано множество специалистов (и не специалистов также), щедро орошающих многострадальный product backlog новыми идеями и целями, как до начала разработки, так и после. Как вы понимаете, цели и истории мутируют, а вместе с ними и задачи. Предварительная оценка по времени теряет свою целесообразность. И т.д. и т.п. Очевидно, нужна специальная методология разработки. Можно попробовать приобщиться к Rational Unified Process (RUP) или Process Mentor. Однако, не стоит. Среди столь популярных ныне Agile методик имеется то, что нам надо — Feature Driven Development (FDD).
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments11

Защищаемся от HTTP DDoS и прочих Хабраэффектов

Reading time5 min
Views10K
Простой способ защиты от HTTP DDoS — включить syn-cookies и заблокировать подонков. Но что делать если атакует 5к-10к хостов да еще и с динамическими IP? Тут нам на помощь придет frontend-backend архитектура c промежуточным кэшированием! Почему с промежуточным кэшированием? А потому что в моем случае от шквала запросов от frontend'а backend умирал унося за собой систему.
Читать дальше →
Total votes 160: ↑152 and ↓8+144
Comments55

Perl и GUI. Работа с меню

Reading time3 min
Views3.1K
Обзор виджетов Tk, я начну с рассмотрения главного меню c учетом особенностей различных ОС.

Для начала создадим заготовку для нашего приложения:

#!/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)

смотрим, что получилось.
image

Толку от пустого меню нету, поэтому «набьем» его командами

# Меню 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(), '<
Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments22

PHPConf 2009 — программа опубликована

Reading time4 min
Views400

image
Программа Web Architect WorkShop Day будет опубликована 4сентября. Планируется провести 3 потока мастер-классов: аналитика и архитектрура, управление качеством, технологии и секреты мастерства.

Льготная регистрация продлена до 10 сентября. Не опоздайте уже 30% мест занято
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments22

Список полезных инструментов для php разработчика

Reading time10 min
Views148K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →
Total votes 214: ↑200 and ↓14+186
Comments131

Continuous integration для php

Reading time9 min
Views14K
Эту статью написал мой добрый приятель и бывший коллега fred, работающий в команде программистов над большим и сложным проектом, который должен работать 24х7. Если кто-то решит пригласить его на хабр — с удовольствием вышлю его email по хабрапочте. Пожелания и комментарии приветствуются, а я обязуюсь передавать ответы автора в меру своих возможностей.

Меня давно посещала мысль запустить CI-сервер для рабочего проекта. База модульных тестов уже достаточно внушительных размеров, а количество людей в проекте немного увеличилось. Можно было бы наблюдать за тем, как изменяется покрытие тестами кода и соблюдаются стандарты кодирования. И наказывать провинившихся. Шучу.
Некоторое время назад была прочитана книжка Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска и статья Quality Assurance Tools for PHP, которые и послужили отправной точкой.
Читать дальше →
Total votes 82: ↑77 and ↓5+72
Comments44

Серия скринкастов по VIM

Reading time1 min
Views5.8K
Если вы хотели начать работать с VIM, но вас что-то останавливало, то перед вами прекрасная возможность начать снова.

Ну а если вы уже продвинутый Vimmer то для вас тоже найдётся что посмотреть.
Total votes 67: ↑57 and ↓10+47
Comments29

Information

Rating
Does not participate
Location
Щелково, Москва и Московская обл., Россия
Date of birth
Registered
Activity