Pull to refresh
5
0
Подгорный Дмитрий @zimorodok

User

Send message

Обзор JS-фреймворков. Путешествие через джунгли JavaScript MVC. Ч. 1

Reading time11 min
Views113K
(от 27 июля 2012)
При написании нативного веб-приложения легко начать чувствовать себя богом, способным работать просто с библиотекой работы с DOM (такой как jQuery) и горсткой сервисных плагинов. Вскоре возникает проблема в виде груды вложенных возвратных функций jQuery и разбросанных DOM-элементов без всякой структуры вместо приложения.

Короче, мы застреваем в спагетти-коде. К счастью, есть современные JS-фреймворки (библиотеки, задающие, кроме функций, правила организации кода --прим. перев.), помогающие поддерживать структуру и организованность в проекте, облегчающие ремонтопригодность в будущем.

■ Что такое MVC или, лучше сказать, MV*?


Эти современные библиотеки дают разработчикам простой путь к организации кода, используя вариации паттерна проектирования, известного как MVC (Model-View-Controller). MVC разделяет задачи в приложении на 3 части:
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments23

Бесплатные книги по JavaScript

Reading time2 min
Views66K

Javascript Enlightenment


Cody Lindley


Уровень знаний: средний
Тщательный обзор мировоззрения JavaScript через разбор встроенных объектов и нюансов.

Открыть

Eloquent Javascript


Marijn Haverbeke


Уровень знаний: начинающий
Вводная книга по JavaScript и программирование в целом.
Открыть

Building A JavaScript Framework


Alex Young


Уровень знаний: продвинутый
Избранные статьи из цикла«Let’s Make a Framework».
Открыть

Читать дальше →
Total votes 77: ↑73 and ↓4+69
Comments15

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Total votes 360: ↑352 and ↓8+344
Comments148

Резюме проблемы «двух и более учителей» и субъективное мнение о ИИ-сообществе

Reading time9 min
Views5.1K
Пока я тут излагал мысль она несколько растеклась по статьям

1. Модель функционального разделения сознания и бессознательного. Введение
2. Модель проявления сознания или ИНС без эффекта забывания
3. Проблема «двух и более учителей». Первые штрихи
4. Обучение с подкреплением на нейронных сетях. Теория

казалось аудитория имеет нужные знания, все таки у нас цвет общества — программисты :) Но увы… последний опрос показал, что далеко не все программисты в курсе ИИ-проблематики. А хамоватые студенты набежавшие на эти статьи в комментариях — еще не доучились.

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

Читать дальше →
Total votes 34: ↑21 and ↓13+8
Comments131

Хабракамп

Reading time2 min
Views14K
Хабракамп — это пост на Хабре, где в комментариях первого уровня IT-специалисты пишут темы, в которых они хорошо разбираются. Темы должны быть специфичные — nginx на 100 000 юзеров в день и настройка bind неинтересны и описаны везде, а nginx на 100 000 000 пользователей в день или настройка гео-DNS для распределенного сервиса интересно. Пользователи в ответ к комментариям пишут своим вопросы специалистам.
Обсуждение Хабракампа в Q&A: habrahabr.ru/qa/19034/
Просьба на первом уровне не задавать вопросы, а писать только специалистам об их сфере деятельности.
Для специалистов это шанс получить некоторое количество кармы, если им лень писать статьи, а для остальных — возможность задать вопросы, ответы на которые сложно найти в Google.
Не ленимся плюсовать тему, чтобы она вышла в топ.
Не забываем плюсовать карму тем кто ответил на ваши вопросы.

Читать дальше →
Total votes 266: ↑214 and ↓52+162
Comments1236

Я не знаю ООП

Reading time12 min
Views548K
Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я.

И вот несколько вещей, которые вызывают у меня непонимание.
Читать дальше →
Total votes 412: ↑309 and ↓103+206
Comments870

Ремесло программиста. Золотые правила

Reading time14 min
Views29K
imageДанный пост представляет собой выдержку «золотых правил» из примечательной книги Питера Гудлифа «Ремесло программиста».

Кто-то освежит память, кто-то сверится как с чек-листом, а кто-то заинтересуется и прочтет книгу. Т.к. пост получился достаточно объемным, можно добавить его в закладки и периодически к нему возвращаться.
Читать дальше →
Total votes 108: ↑90 and ↓18+72
Comments62

Своё приложение на Node.js с хранением в Dropbox – это просто

Reading time8 min
Views10K
Несмотря на то, что главным моим хобби так и остаются роботы, я трачу немало усилий, чтобы оставаться в трендах своей основной стези – программирования. Волей судьбы недавно удалось познакомиться с Node.js, я узнал о его web фреймворке express, подружился с новым для себя template engine Jade и в довершение ко всему связал все это с папкой в Dropbox.
image
В этом посте я постараюсь коротко рассказать, как можно организовать web-сервис для хранения файлов, используя лишь бесплатные решения.
Всех заинтересованных – прошу под кат.
Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments2

Кормление и уход за разработчиками (или почему мы такие ворчуны)

Reading time22 min
Views28K
Прим. переводчика — В оригинале использовался всем знакомый термин «software engineer». Так как русский его аналог «инженер-программист» используется в повседневной речи редко, пришлось использовать слово «разработчик» как наиболее близкое. Также профессия «short-order cook», с которой автор сравнивает положение многих разработчиков в индустрии, была переведена как «мальчик на побегушках» — мне кажется, что она отлично отражает суть проблемы отношения к разработчикам. Наконец, я старался везде вместо слов «to code» и «programming» использовать «разрабатывать» и «разработка» из-за сложившемся в русском языке негативном смысле слов «кодировать» и «программирование» как примитивных процессов перевода требований в машинные инструкции низкого или высокого уровня.

Автор оригинальной статьи — Nickolas C. Zakas, известный фронтенд разработчик и JavaScript-евангелист в свое время проработавший более пяти лет в Yahoo. Это запись из его блога, в которой он говорит о том, почему с разработчиками так сложно договориться и что с этим делать.


Не так давно Дженна Байлотта написала замечательную статью «Как дизайнерам ужиться с разработчиками», в которой она описывает методы работы в команде, позволяющие дизайнерам и разработчикам добиться лучшей производительности. Я в свое время работал с дизайнерами (а, работая в UI, и с разработчиками) и столкнулся с похожими проблемами, так что мне понятен ее практичный подход. Во время командной работы никогда не помешает уважать труд своих коллег и понимать их способ мышления.

Одна из главных мыслей той статьи заключалась в том, что разработчики говорят «нет» слишком быстро. Эта мысль тут же въелась мне в мозг и долго отказывалась вылезать оттуда. Мне хотелось воскликнуть: «Но подожди, ты же не понимаешь, почему мы говорим „нет“!». Тут же появился миллион других защитных аргументов. На самом деле она, конечно, права — мы правда слишком быстро говорим «нет», причем не только дизайнерам, а вообще всем. Это побудило меня поразмыслить над психологией разработчиков и тем, что составляет нашу истинную суть.
Читать дальше →
Total votes 242: ↑228 and ↓14+214
Comments76

Имитируем пересечение, исключение и вычитание, с помощью опережающих проверок, в регулярных выражениях в ECMAScript

Reading time2 min
Views32K

От переводчика


Это перевод небольшой заметки, написанной вчера Lea Verou, в ней предлагается интересная, хотя и не новая техника для решения повседневных задач.

Информация в статье касается ECMAScript, но может использоваться и в других RegExp Движках (хотя и есть вероятность, что там есть более подходящее решение).

Если примеры кажутся вам сложными, рекомендую играть с ними в консоли, по мере прочтения. И Заранее прощу прочтение за пугающее название.

Статья


Если вы какое-то время используете регулярные выражения, то наверняка вы сталкивались с разными вариантами следующих задач:

  • Пересечение:«Что-то, что совпадает с шаблоном А и шаблоном Б»
    Например: Пароль, минимум 6 символов, в котором хотя бы одна цифра, хотя бы одна буква, и хотя бы один специальный символ

  • Исключение: «Я хочу что-то, что совпадает с шаблоном А, но не совпадает с шаблоном Б»
    Например: Любое целое число, которое не делится на 50

  • Отрицание: Все. Что не совпадает с шаблоном А
    Например: Строка, которая не содержит в себе слово «Foo»


Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments9

DOM Storage window broadcast

Reading time2 min
Views7.9K
В статье речь пойдет об интересном DOM Storage эвенте, который позволяет выполнять броадкаст общение между окнами обраузера одного домена не подозревающих об существовании друг друга.

image

DOM Storage (localStorage sessionStorage) кроме потрясающей возможности хранения информации на клиенте имеет ещё одну документированную, но малоизвестную возможность — уведомление об изменении/удалении элемента DOM Storage для всех окон открытых из текущего домена.
Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments5

Уязвимы по определению

Reading time4 min
Views39K
У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.
Читать дальше →
Total votes 89: ↑87 and ↓2+85
Comments29

Онлайн-репетитор по Python

Reading time1 min
Views24K
Для курса по программированию MIT разработан интерактивный инструмент Online Python Tutor, он в графическом виде показывает изменение стека и кучи на каждом шаге выполнения кода. Таким образом, онлайновый «наставник» как бы наглядно объясняет студенту работу программы.



В окно редактора можно скопировать любой код или посмотреть несколько уже готовых простеньких примеров (факториал, квадратный корень, последовательность Фибоначчи и т.д.). Навигация осуществляется стрелками на клавиатуре. Студенты, изучающие Python, могут увидеть и лучше понять работу кода.
Total votes 88: ↑82 and ↓6+76
Comments30

Игровые циклы или ЭлектроКардиоГама

Reading time11 min
Views52K
Игровой цикл — это пульс каждой игры. Ни одна игра не будет работать без этого. Однако, к несчастью каждого нового разработчика игр, в сети нет хороших статей, в которых уделено достаточное внимание этой теме. Но не печальтесь, потому как только что вы получили возможность прочитать единственную в своем роде статью, уделяющую вопросу игровых циклов заслуженное внимание. По долгу службы мне часто приходится иметь дело с большим количеством кода мелких мобильных игр. И я каждый раз удивляюсь сколь много существует реализаций игрового цикла. Вы тоже можете удивиться как можно для такой, казалось бы простой, вещи можно придумать множество имплементаций. А ведь можно! И в статье я постараюсь рассказать о достоинствах и недостатках наиболее популярных вариантов игровых циклов. Также я постараюсь описать наилучший на мой взгляд вариант реализации игрового цикла.
(Thanks to Kao Cardoso Félix this article is also available in Brazilian Portuguese) (Thanks for me, in Russian also, прим. перев.)
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments62

Три подхода к методологии построения сложного клиентского приложения

Reading time6 min
Views10K
Наверно, не существует единого рецепта, который бы всех устроил. Это касается любой проблемы. Для разработчиков этот тезис самоочевиден, и вовлеченность в использование и проектирование отдельных инструментов определяется, главным образом, лишь профессионализмом. Изобретение велосипедов романтично и неизбежно.

Особо вероятно изобретение велосипеда, когда рост сложности приложения происходит постепенно и в некотором смысле незаметно. Сложное приложение обычно является богатым приложением (rich), его элементы и особенности специфицированы W3C www.w3.org/TR/backplane. Известный JavaScript-евангелист Addy Osmani так дополнительно определяет сложное приложение: “По-моему, крупное JavaScript приложение есть нетривиальное приложение, требующее значительных усилий разработчика для поддержки, причем наиболее сложное оперирование обработкой и отображением данных ложится на браузер” (http://addyosmani.com/largescalejavascript/).
Читать дальше →
Total votes 40: ↑34 and ↓6+28
Comments27

Корпоративный терроризм

Reading time7 min
Views3.1K
Я бы хотел начать эту историю с некоего дисклеймера (отмазки), чтоб у читателей не возникло желания, не дочитав до конца, ткнуть пальцем в автора. Собственно, к самой интересной части истории, изложенной ниже, автор имеет достаточно отдаленное отношение. Авторская “отдаленность” существенна ровно на столько, чтобы изложить эту историю читателям, и при этом быть в праве откреститься от участия в событиях, которые в ней изложены. Причина, по которой автор взялся за клавиатуру, далеко не в желании пропиариться или получить какой-то рейтинг, причина совершенно в другом; в конце об этом будет сказано особо.

Первое


“… бизнес не выбирают: кого в какой капусте нашли — тот той капустой и башляет ...”
Читать дальше →
Total votes 179: ↑147 and ↓32+115
Comments71

Рисуем картинки с помощью кривой Гильберта

Reading time5 min
Views45K
В субботу на прошлой неделе «дело было вечером, делать было нечего», и мы с хабраюзером sourcerer разговаривали не понятно о чём. И почему-то речь зашла речь о задаче обратной к задаче построения графика функции по её выражению. То есть, например, у нас есть выражение y(x) = (cos0,5x ⋅ cos 200x + |x|0,5 − 0,7)(4 − x2)0,01. График такой функции чем-то напоминает сердечко. Но нам был интересен обратный вопрос, как, имея, например, изображение сердечка, получить выражение для функции, графиком которой будет это самое сердечко.

Какие-нибудь ряды Фурье вспоминать не хотелось, а хотелось чего-то простого и красивого. Мы начали вспоминать известные нам результаты, связанные с этим вопросом. В результате получилась программка, которая по изображению генерирует ломаную линию, чем-то напоминающую исходное изображение. На примере котёнка по имени Гав это выглядит примерно так (смотреть лучше издалека):



Если интересно как такое сделать, а также узнать про формулу конопли, формулу, график которой является этой же формулой, то добро пожаловать под хабракат. (Будет много картинок.)

Читать дальше →
Total votes 230: ↑229 and ↓1+228
Comments43

Канал GTV: Документальный фильм про Стива Джобса и NEXT. 1986г. (русский перевод)

Reading time1 min
Views9.6K
Документальный фильм про Стива Джобса и его стартап, компанию NEXT, которую он основал после ухода из Apple. Фильм снят в 1986 году. Перевод на русский язык — канал GTV.

imageimageimageimage

Приятного всем просмотра!
Читать дальше →
Total votes 170: ↑142 and ↓28+114
Comments51

Шпаргалка по пакетному менеджеру NPM

Reading time5 min
Views405K

npm — это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:

Читать дальше →
Total votes 49: ↑44 and ↓5+39
Comments11

Алгоритм сортировки Timsort

Reading time6 min
Views152K
Timsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.



Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.

Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
Читать дальше →
Total votes 292: ↑285 and ↓7+278
Comments63

Information

Rating
Does not participate
Location
Украина
Registered
Activity