Как стать автором
Обновить
0
0
Виталий Лебедев @Sarrees

Пользователь

Отправить сообщение

Сайт для программиста. Часть 2. Публикация

Время на прочтение4 мин
Количество просмотров39K

В первой части я рассказал, как программисту относительно просто запустить с нуля свой личный сайт с использованием Github, Heroku и Twitter Bootstrap.

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

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

Читать дальше →
Всего голосов 46: ↑35 и ↓11+24
Комментарии18

Немного про Deadlock

Время на прочтение2 мин
Количество просмотров131K
Это совсем краткий пост о причинах возникновения Deadlock

В более менее нагруженных проектах, использующих транзакции InnoDB, в любой момент может возникнуть ошибка вида

«Deadlock found when trying to get lock; try restarting transaction»

Главное не паниковать при виде этих страшных слов, сейчас мы разберемся почему это происходит.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии50

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 6

Время на прочтение23 мин
Количество просмотров105K

Этой весной, Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

Один из студентов лекции записывал и выложил транскипт. В данном хабратопике ntonio переводит шестое занятие. Форматирование 9e9names. Редактор Astropilot

Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →
Всего голосов 27: ↑18 и ↓9+9
Комментарии6

Phalcon — скомпилированный PHP MVC Framework

Время на прочтение7 мин
Количество просмотров56K

Создание скомпилированных MVC фреймворков для PHP не раз приходила на ум кодерам.

Достоинства такого подхода:
  • Высокая производительность
  • Малая нагрузка файловой системы
  • Меньший расход памяти (при строгой типизированности)
  • Частичная обработка данных без интерпритации

И само собой не менее явные недостатки:
  • Если Вы не знаете C, то Вы полностью зависите от разработчиков
  • Проект может в любую секунду сдуться
  • В зависимости от архитектуры, часть модулей все равно приходится писать самому, что уменьшает выигрыш

Читать дальше
Всего голосов 55: ↑47 и ↓8+39
Комментарии101

Настройка Nginx + LAMP сервера в домашних условиях. Часть 1: Настройка frontend — backend

Время на прочтение8 мин
Количество просмотров84K

Здравствуйте. Недавно я задавал вопрос по поводу создания цикла статей. Вот первая статья.

В этом цикле статей вы узнаете как грамотно настроить LAMP сервер, аля «хостинг только мощней».
Мы будем использовать следующий стек: nginx — apache-mpm-itk — mod_php — mysql — linux/debian.

Буду освещать следующие темы:
  • Настройка frontend — backend
  • Расчет возможностей сервера, настройка mysql и backend
  • Рассказ об опыте на базе intel s3420gp

Совершенно уверенно могу сказать, что настройка LAMP сервера не ограничивается 6-10 командами установки и раскомментирования определенных строчек в файлах настройки.
Пример: по умолчанию nginx не дает возможности закачать на сервер тело запроса больше чем 1M. Если не настроить данный параметр, будет возникать ошибка 414 (Request-URI Too Large), при попытке добавления небольшой серии фотографий.
У apache совершенно противоположное: у него тело запроса по умолчанию не ограничено. Это делает возможным совершать пакости.

В этой статье мы познакомимся со всей настройкой досконально. В статье вы сможете найти конфигурационные файлы, подготовленные мной. Будучи педантом, мои конфигурационные файлы всегда сгруппированы по типу, например: «производительность», «генерация контента», «страницы ошибок», «сжатие», «другие настройки», «общие настройки». Мне кажется, что читаемость данных файлов становится намного лучше, если они сгруппированы.

Мы узнаем о том какие бывают простые атаки и как от них защищаться. Сразу скажу, что при базовой конфигурации frontend в лице nginx — backend apache все равно остается уязвим.

Я практически уверен, что я не смогу уместить все в одну статью. Добро пожаловать под кат.
Читать дальше →
Всего голосов 107: ↑75 и ↓32+43
Комментарии78

Базовые стили и полезные CSS-сниппеты

Время на прочтение6 мин
Количество просмотров148K


В этой статье собраны полезные  и «правильные» стили и сниппеты, которые помогут ускорить процесс разработки сайта, а также оптимизировать верстку.
Читать дальше →
Всего голосов 163: ↑118 и ↓45+73
Комментарии54

Conficker — из пушки по воробьям

Время на прочтение8 мин
Количество просмотров42K
Conficker — семейство вредоносного программного обеспечения, относящегося к категории червей. Conficker — название, наиболее часто употребляемое в прессе и образованное путем перестановки частей домена trafficconverter.biz, к которому обращалась первая версия ВПО, согласно другой версии название образовано от английского слова configuration и немецкого слова ficker (синоним английского fucker). Среди зарубежных антивирусных компаний используется название Downadup, а так же Kido в классификации Kaspersky Lab. Первые образцы были обнаружены в ноябре 2008 года. По состоянию на январь 2009 было поражено около 9 миллионов компьютеров во всём мире. Столь большое число обусловлено использованием для своего автоматического распространения уязвимости службы Server операционной системы Microsoft Windows MS08-067. Следует отметить, что на момент распространения компания Microsoft уже выпустила обновление безопасности, устраняющую данную уязвимость. Однако тот факт, что обычные пользователи, как правило, не уделяют должного внимания механизму постоянного обновления операционной системы (в том числе из-за использования «пиратских» копий), сыграл немаловажную роль. К сожалению, в очередной раз на практике было продемонстрировано пренебрежительное отношение к вопросам компьютерной безопасности. В апреле 2009 года размер ботсети оценивался в 3.5 миллиона.
Существует пять основных модификаций Conficker, обозначаемых буквами A (21 ноября 2008), B (29 декабря 2008), C (20 февраля 2009), D (4 марта 2009), E (7 апреля 2009). В терминологии некоторых антивирусных компаний используется наименования A, B, B++, C, D соответственно.
Читать дальше →
Всего голосов 100: ↑85 и ↓15+70
Комментарии41

Пишем плагин для jQuery

Время на прочтение8 мин
Количество просмотров247K
Эта статья призвана дать представление об основных правилах, подходах, дающих наилучшие результаты, и распространённых ошибках, на которые стоит обратить внимание при разработке плагинов для jQuery.
Читать дальше →
Всего голосов 171: ↑138 и ↓33+105
Комментарии67

Дайджест интересных новостей и материалов из мира PHP за последние две недели №4 (03.11.2012 — 16.11.2012)

Время на прочтение4 мин
Количество просмотров20K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 84: ↑71 и ↓13+58
Комментарии15

Wordpress.com начал принимать биткоины

Время на прочтение1 мин
Количество просмотров10K
WordPress.com — одна из популярнейших хостинговых платформ, которая занимает 20 место в рейтинге крупнейших сайтов интернета Alexa top 100, и услугами которой пользуются 56 миллионов блогов, теперь принимает биткоины. Базовые услуги WordPress.com бесплатны, а заплатив, можно избавиться от рекламы или использовать нестандартный дизайн. Традиционные платёжные системы имеют множество ограничений, так, например, PayPal недоступен из более чем 60 стран, многие платёжные карты тоже работают не везде. Это идёт вразрез с миссией компании — предоставить площадку для публикации всем желающим, без каких-либо ограничений.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии26

Построение нейронных сетей в php используя FANN, пример реализации

Время на прочтение5 мин
Количество просмотров82K
Передо мной предстала задача анализа большого количества информации и выявления закономерностей. И первое, что пришло в голову — построить математическую модель с помощью нейронной сети.

Поскольку данные для анализа формируются в php и мне этот язык сейчас ближе всего, то искалась библиотека с интерфейсом для php. В связи с этим мне порекомендовали FANN (Fast Artificial Neural Network) — открытое программное обеспечение для построения сетей. У этого решения есть апи для 15 языков, так что почти каждый сможет выбрать что-то для себя.

Пример. Распознавание языка текста на странице

Для примера возьмем задачу легкую, но недалекую от нашей реальности и от серьезных задач. Допустим есть 1000 документов, на 3-х разных языках. Пусть это будут французский, английский и польский. Наша задача научить нейронную сеть распознавать язык документа. Для этого мы используем самый простой частотный механизм. Но тем не менее его результаты неплохи. Его суть в том, что у каждого языка с разной частотой в тексте встречаются одни и те же символы. Мы подготавливаем 3 больших куска текста для каждого из языков (английский, французкий, польский), посчитаем для каждого символа частоты. Эти данные мы передадим в нейронную сеть, с указанием какой набор частот принадлежит каждому из языков. Дальше нейронная сеть все сделает сама.
Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии19

Сервис трекинга Почты России уподобился китайскому коллеге

Время на прочтение1 мин
Количество просмотров39K


Сегодня на сайте нашей любимой «Почты России» появилась капча. Это означает, что забирать информацию по почтовым отправлениям простым POST-запросом больше не получится. Как следствие, многочисленные сервисы «Где моя посылка?» потеряют (на время, скорее всего) немалую часть своей аудитории.

Существует, конечно полусекретный SOAP API о примере использования которого рассказал уважаемый qnub, но было бы логично ожидать, что теперь сделают новый полноценный документированный API. Вопрос: сколько придётся этого ждать?

А пока что сервис отслеживания Почты России стал таким же как у братьев-китайцев — медленным и неудобным для конечного пользователя.
Дальнейшее развитие событий
Всего голосов 42: ↑34 и ↓8+26
Комментарии118

Что нужно знать каждому разработчику о кодировках и наборах символов для работы с текстом

Время на прочтение8 мин
Количество просмотров118K
Это первая часть перевода статьи What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

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

Эта статья о кодировках и наборах символов.
Читать дальше →
Всего голосов 98: ↑89 и ↓9+80
Комментарии37

Анатомия атаки: Как я взломал StackOverflow

Время на прочтение4 мин
Количество просмотров85K
Почти два года назад я наткнулся на довольно значительную уязвимость в сети сайтов StackExchange. Я говорю «наткнулся» потому, что я не пытался взломать сайт. Обстоятельства приоткрыли мне дверь. Сама уязвимость является довольно интересной, и содержит урок для всех, кто создает и занимается поддержкой сайтов или серверной инфраструктуры. Итак, вот история о том, как я взломал StackOverflow
Читать дальше →
Всего голосов 143: ↑127 и ↓16+111
Комментарии52

IEC60027-2: Давайте использовать стандарты, или 1024 B == 1 KiB && 1024 B != 1 KB && 1000 B == 1 kB

Время на прочтение5 мин
Количество просмотров130K
Доброго времени суток, уважаемые!

В последнее время, читая различные статьи в хабре, всё больше стал замечать, что многие авторы до сих пор ничего не знают о ISO/IEC стандартах бинарных префиксов (KiB=кибибайт, MiB=мебибайт и т.д.) и постоянно путают их с SI префиксами (kB=килобайт, MB=мегабайт). Поэтому я решил ещё раз заговорить об этом в надежде, что, прочитав статью, ещё пара человек начнёт пользоваться стандартами!

Читать дальше →
Всего голосов 293: ↑232 и ↓61+171
Комментарии380

Учимся думать и писать на Erlang (на примере двух комбинаторных задач)

Время на прочтение12 мин
Количество просмотров36K
— … Тут я даю ему по морд… Нет, бить нельзя!
— В том-то и дело, что бить нельзя, — лицемерно вздохнул Паниковский. — Бендер не позволяет.
И.Ильф, Е.Петров. Золотой теленок.

Мозголомная Брага жила в прозрачном сосуде и была такая
крепкая, что даже ужас. Она не то что из живота — прямо изо рта
бросилась в голову и стала кидаться там из стороны в сторону,
ломая умственные подпорки и укрепы.
М.Успенский. Там, где нас нет.

Пожалуй каждый, кто впервые приступает к изучению Erlang, ощущает себя в положении Шуры Балаганова, которому запрещено было применение единственного доступного и понятного метода: «бить нельзя...». В Erlang отсутствуют такие привычные для большинства современных языков понятия, как повторное присвоение переменной и, соответственно, накопление результата в одной переменной. (Справедливости ради следует отметить, что поведение типа «глобальная многократно меняющаяся переменная» в Erlang все же можно реализовать. Для этого в каждом процессе имеется словарь хешей, хранящий определяемые программистом пары ключ — значение. Имеются встроенные функции put(Key, Value), get(Key) и еще несколько вспомогательных функций. Но использование такого словаря в приложениях считается плохим стилем и рекомендуется только в исключительных случаях (http://www.erlang.org/doc/man/erlang.html\#put-2)). Как следствие, итерации в цикле невозможно реализовать с помощью привычного наращивания значений итерационной переменной. Накопление результата осуществляется только через рекурсию, а организация циклов — через хвостовую рекурсию. (Конечно, и итерации, и накопление результата в цикле можно реализовать через библиотечные функции для списков lists:foreach(Function, List), lists:foldl(Function, StartValue, List), lists:foldr(Function, StartValue, List) (http://www.erlang.org/doc/man/lists.html) и их аналоги для наборов (http://www.erlang.org/doc/man/sets.html, http://www.erlang.org/doc/man/ordsets.html, http://www.erlang.org/doc/man/gb_sets.html) и массивов (http://www.erlang.org/doc/man/array.html). Но наша цель — научиться писать циклы, а не использовать готовые решения, поэтому здесь мы воздержимся от употребления подобных библиотек).

Таким образом, в Erlang приходится ломать привычные шаблоны мышления и заменять их новыми паттернами, характерными только для этого языка программирования. Конечно, идеальное средство — мозголомная брага, способная ломать все «умственные подпорки и укрепы». Но для нас это, пожалуй, слишком радикальное средство, и мы пойдем другим путем.

В житии святого Антония Великого есть рассказ об одном из его учеников. Ученик стоял в храме и слушал, как святой Антоний читал Псалтырь. Как только прозвучал первый стих первого псалма:
Блажен муж, который не ходит на совет нечестивых...
ученик вышел из храма. С тех пор его никто не видел почти 30 лет, а когда он вновь появился в храме, Антоний Великий спросил, почему он оставил их так надолго и куда исчез. Ученик ответил: «отче, я услышал слова псалма, и удалился в пустыню, чтобы постараться выполнить то, о чем говорится в этих словах, т.е. не ходить на совет нечестивых мыслей». Другими словами, он усвоил практический урок этих слов, и теперь пришел чтобы читать дальше. К сожалению, у нас нет такого резерва времени, да и цели наши не столь возвышенны. Но основной концепт можно перенять.
Мы рассмотрим две стандартные комбинаторные задачи:
  1. поиск всех возможных перестановок (permutations) из данного множества по N элементов
  2. поиск всех возможных сочетаний (combinations) из данного множества по N элементов

и разберем различные подходы и способы их решения средствами языка программирования Erlang, чтобы на конкретных примерах понять и освоить некоторые особенности программирования на этом языке.
Читать дальше →
Всего голосов 46: ↑38 и ↓8+30
Комментарии37

Микроэлектронная индустрия в России (2012)

Время на прочтение10 мин
Количество просмотров159K
С теорией (1) (2) закончили — пора переходить к практике. В этой статье — о том, какие микроэлектронные заводы в России (и Белоруссии) существуют и что они могут делать, а также о самых крупных разработчиках собственно самих микросхем, и каких работающих результатов им удалось добиться.

Под катом — драматическая история о пластиковой электронике, российской «гуманитарной помощи» знакомой многим компании AMD и билетах Метро.

Ну и в дополнение — график показывающий как изменялось состояние российской микроэлектроники последние 22 года по сравнению с США и Китаем.
Читать дальше →
Всего голосов 177: ↑175 и ↓2+173
Комментарии53

Atomic operations

Время на прочтение4 мин
Количество просмотров52K
Стало интересно, как же именно достигается атомарность операций. Кому интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии33

Машина времени в git

Время на прочтение5 мин
Количество просмотров194K
В последнее время мои коллеги начинают знакомство с git'ом. И один из интересующих их вопросов — как откатиться до определённой ревизии. В интернете можно найти набор команд, но хочется, чтобы было понимание каждой из них. Баловство с комадами git'а без понимания может привести к потере истории разработки.

В этой статье я хочу рассказать о командах git checkout и git reset с ключами --soft и --hard.
Читать дальше →
Всего голосов 127: ↑122 и ↓5+117
Комментарии39

Progressive Enhancement или всё-таки Graceful Degradation

Время на прочтение6 мин
Количество просмотров93K
SerenityНельзя просто так взять и рассказать про progressive enhancement, не упомянув о graceful degradation. В чем же разница между этими понятиями? Как уже говорилось в более ранней статье, graceful degradation можно перевести, как отказоустойчивость. Это очень широкое понятие, но в контексте веба его можно понимать как отказоустойчивость клиентских веб-интерфейсов, серверной части сайтов и так далее. В этой статье graceful degradation будет пониматься как отказоустойчивость клиентских веб-интерфейсов.

Graceful degradation может выражаться в возможности работы при отключенном JavaScript, в достаточно аккуратном отображении интерфейса в браузере, не поддерживающем новые свойства CSS3, в адекватном отображении сайта при отключенных изображениях. В каждом из этих случаев работа пользователя с интерфейсом будет в принципе возможна, хотя и не так удобна.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии49

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность