Pull to refresh
108
0
Настоящее Имя @artemlight

User

Send message

Как работает реляционная БД

Reading time 51 min
Views 534K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3 +226
Comments 134

GTD на кухне: чем накормить голодного программиста

Reading time 9 min
Views 56K
imageИтак, как и обещал в первой части, продолжаем упрощать бытовую жизнь хабражителя. Сегодня 8 марта (кстати, девушки, поздравляю!) и части мужчин хочется порадовать своих женщин и освободить их от «рабского труда» на кухне, а другой части – приготовить для себя не традиционные пельмени\вареники\сосиски, а что-то посущественней.
Вот несколько проверенных рецептов, которые пригодятся и первым, и вторым.

Осторожно, много картинок. Голодным не входить!
Читать дальше →
Total votes 220: ↑168 and ↓52 +116
Comments 214

Дарим роботов на Новый год

Reading time 5 min
Views 15K
Новый год осталось ждать уже недолго и многие уже распланировали свои отпуска. С другой стороны о подарках мы начинаем задумываться зачастую только в последние предновогодние дни. Для тех, кто покупает подарки заранее или просто хочет подготовить необычный подарок, подготовлена данная обзорная статья. Всем остальным рекомендую сохранить статью в закладках, чтобы числа 28го внезапно вспомнить о ней, открыть, и, не ломая голову, бегом в магазин. Как вы уже поняли из заголовка, выбирать мы будем исключительно из роботов, ну и, возможно, пару радиоуправляемых моделей.

image

Читать дальше →
Total votes 110: ↑106 and ↓4 +102
Comments 58

Icon Ambulance — Скорая пиктографическая помощь

Reading time 2 min
Views 814
Перевод одной истории, произошедшей в Калифорнии.

Воскресным утром, 6-го января 2008 года я был в церкви когда мой телефон завибрировал. Как можно более незаметно я проверил телефон и заметил, что на экране значится — «Абонент не определён». Я решил проигнорировать звонок.

После службы, когда мы с моей семьёй шли к машине, я просмотрел сообщения на телефоне. Там было одно от Стива Джобса. Оно гласило: «Вик, перезвони, пожалуйста, мне на домашний. Я хотел бы обсудить кое что важное.»
Читать дальше →
Total votes 113: ↑77 and ↓36 +41
Comments 61

Реальная альтернатива nVidia 3Dvision или когда дёшево не значит плохо

Reading time 5 min
Views 18K
Давным-давно, когда Pentium-мы были первыми, харды гигабайтными, а видеокарты PCI-йными. Купил я как-то себе на организацию замечательную видеокарточку GeForce в красивой коробочке, где кроме собственно карточки лежали ещё очки с ЖК затворами...
Читать дальше →
Total votes 38: ↑31 and ↓7 +24
Comments 26

Автопровизия (Автонастройка) телефонов Polycom с помощью Asterisk

Reading time 13 min
Views 18K

Задача: Настроить телефоны (или любой другой абонентский девайс) автоматически на основе MAC-адреса, желательно не доставая устройство из коробки.



Идея централизованной настройки абонентских устройств давно была у меня и, наконец, нашла свою реализацию в одном из проектов. Видео в конце поста.
Практически все (Cisco, Polycom, D-Link, Escene) IP-телефоны, с которыми мне доводилось встречаться, в том или ином виде поддерживают централизованную настройку с сервера, т.е. Auto-Provisioning по нашему автопровизия. В данном случае рассмотрен пример с телефонами Polycom, но по сути, аналогичный подход позволит настроить любой телефон с определенными корректировками.

Как это работает (про Polycom)?

Телефон по умолчанию настроен на получение IP-адреса по DHCP, помимо самого адреса телефон получает от DHCP ряд опций в числе которых обычно указываются шлюз, маска сети и DNS- сервер, кроме того можно указать SNTP-сервер и еще много чего. Polycom’ы смотрят по умолчанию в опцию 66 и 160, там они пытаются найти адрес/имя сервера автопровизии. Если телефон обнаруживает адрес сервера, он пытается подключиться к нему по уполчанию через FTP (поддерживает еще HTTP, HTTPS, TFTP), используя в качестве логина и пароля:
Username
PlcmSpIp
Password
PlcmSpIp

Телефон запрашивает у сервера версию (файл sip.ver) и сами файлы прошивки и конфигурационные файлы. Телефон выкачивает новую прошивку, обновляется, затем после перезагрузки снова обращается к серверу, видит, что ПО не требует обновления, скачивает и применяет конфигурационные файлы в формате XML. В общем случае аппарат запрашивает следующие файлы.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 4

Изучаем внутреннюю кухню ядра Linux с помощью /proc для быстрой диагностики и решения проблем

Reading time 13 min
Views 66K
Данная статья касается современных линуксов. Например, RHEL6 с ядрами 2.6.3х — подойдёт, а вот RHEL5 с ядрами 2.6.18 (кстати, наиболее популярный в продакшне) — увы, нет. И ещё — здесь не будет описания ядерных отладчиков или скриптов SytemTap; только старые-добрые простые команды вида «cat /proc/PID/xyz» в отношении некоторых полезных узлов файловой системы /proc.

Диагностика «тормозящего» процесса


Вот хороший пример часто возникающей проблемы, которую я воспроизвёл на своём лаптопе: пользователь жалуется, что команда find работает «значительно медленнее», при этом не возвращая никаких результатов. Зная, в чём дело, мы решили проблему. Однако меня попросили изложить систематический подход к решению подобных задач.

К счастью, система работает под управлением OEL6, т.е. на достаточно свежем ядре (а именно — 2.6.39 UEK2)

Итак, приступим к диагностике.
Подробности
Total votes 127: ↑125 and ↓2 +123
Comments 28

zfsonlinux — легко и просто

Reading time 4 min
Views 30K
zfsonlinux

У пользователей Linux с некоторых пор появилась возможность использовать ZFS не прибегая к FUSE, т.е. в ядре.

Множество ограничений, которые накладывает FUSE (в первую очередь ограничения по производительности; об остальных можно спросить google) не позволяют использовать ZFS через FUSE в большинстве возникающих задач.

Помимо прочего, код ZFS не может быть включен в дерево исходных кодов ядра Linux, как уже многие знают, из-за несовместимости лицензии CDDL с GPL, а это очень сильно повлияло на проникновение ZFS на Linux-системы.

Но с недавних пор развитие проекта zfsonlinux, разработчики которого портировали код ZFS из Solaris в виде модулей ядра для Linux, достигло такой точки развития, при которой можно использовать ZFS в Linux без особых усилий и с достаточным уровнем стабильности.

Как именно воспользоваться zfsonlinux (на примере rhel/centos/scientific linux 6) можно узнать в статье далее.
Читать дальше →
Total votes 47: ↑39 and ↓8 +31
Comments 44

Хочешь быть iOS разработчиком? Будь им!

Reading time 2 min
Views 387K
На хабре в прошлом месяце была опубликована статья Конкурс ВК: Мессенджер для Android. Как это было!, в которой автор поделился своими мыслями о конкурсе и опубликовал список ресурсов и статей, которые помогли ему в создании приложения. Так как в последнее время я начал изучать разработку под iOS, то у меня скопилось некоторое количество ссылок, которые могут быть полезны для начинающих. Поэтому я последую его примеру и сделаю то же самое, только для своей платформы. Надеюсь, кому-нибудь они окажутся полезны и сэкономят немного времени.

Читать дальше →
Total votes 234: ↑222 and ↓12 +210
Comments 38

Ваш сайт тоже позволяет заливать всё подряд?

Reading time 4 min
Views 51K
Один французский «исследователь безопасности» этим летом опубликовал невиданно много найденных им уязвимостей типа arbitrary file upload в разных «написанных на коленке», но популярных CMS и плагинах к ним. Удивительно, как беспечны бывают создатели и администраторы небольших форумов, блогов и интернет-магазинчиков. Как правило, в каталоге, куда загружаются аватары, резюме, смайлики и прочие ресурсы, которые пользователь может загружать на сайт — разрешено выполнение кода PHP; а значит, загрузка PHP-скрипта под видом картинки позволит злоумышленнику выполнять на сервере произвольный код.

Выполнение кода с правами apache — это, конечно, не полный контроль над сервером, но не стоит недооценивать открывающиеся злоумышленнику возможности: он получает полный доступ ко всем скриптам и конфигурационным файлам сайта и через них — к используемым БД; он может рассылать от вашего имени спам, захостить у вас какой-нибудь незаконный контент, тем подставив вас под абузы; может, найдя параметры привязки к платёжной системе, отрефандить все заказы и оставить вас без дохода за весь последний месяц. Обидно, правда?

Как ему это удастся?
Total votes 121: ↑102 and ↓19 +83
Comments 120

Morris.js: средство рисования красивых графиков при помощи jQuery и Raphaël

Reading time 2 min
Views 19K
В позавчерашнем выпуске «Mozilla Hacks Weekly» увидал гиперссылку «Morris.js», пошёл по ней, почитал, порадовался — а теперь и вам поведаю.

Morris — это легковесный джаваскрипт (всего-то 3052 байта после миниатюризации) с открытым исходным кодом (распространяемым по упрощённой лицензии BSD), который для работы требует jQuery и Raphaël и строит с их помощью графики на простой сетке горизонтальных линий, наподобие такого:

[график]

По оси абсцисс откладывается время, по оси ординат — какие-нибудь зависящие от времени значения. (Morris изначально разрабатывался для сайта, показывающего общее число автомашин той или иной марки в Великобритании, так что для него естественно, что ось абсцисс — это ось времени.)

Графики реагируют на мышь: вспучиваются точки, соответствующие указанному мышью моменту во времени, и подле них появляются подсказки.

Достоинство скрипта — простота API. Приведённый мною пример создаётся вот таким вызовом:

// поквартальные данные, тонкие линии, цвета их заданы в явном виде
Morris.Line({
  element: 'quarterly',
  data: [
    {q: '2009 Q3', a: 100, b: 75},
    {q: '2010 Q2', a: 75, b: 50},
    {q: '2010 Q3', a: 75, b: 50},
    {q: '2011 Q1', a: 50, b: 25},
    {q: '2011 Q3', a: 50, b: 25},
    {q: '2011 Q4', a: 75, b: 50},
    {q: '2012 Q2', a: 100, b: 75}
  ],
  xkey: 'q',
  ykeys: ['a', 'b'],
  labels: ['Series A', 'Series B'],
  lineColors: ['#167f39','#044c29'],
  lineWidth: 2
});

Читать дальше →
Total votes 52: ↑48 and ↓4 +44
Comments 20

Впечатляющие анимационные эффекты

Reading time 2 min
Views 115K
С появлением jQuery, у веб-программистов появилась возможность создавать впечатляющие визуальные эффекты, не прибегая к использованию технологии flash. В данной статье представлено несколько ярких примеров того, каких потрясающих результатов можно достичь, используя стандартные средства браузера и свое воображение.
Читать дальше →
Total votes 262: ↑246 and ↓16 +230
Comments 78

Information

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