Pull to refresh
0
0
Pandorin @Pandorin

User

Send message

Миллиардер, сделавший себя сам, рассказывает о простой методике принятия решений

Reading time2 min
Views33K
Первая глава книги канадского миллиардера Сеймура Шулича «Умнейте: уроки жизни и бизнеса» предлагает инструмент, расширяющий возможности того списка «за и против», который многие из нас используют для принятия решений.

«Я узнал об этом на курсе практической математики более 50 лет назад, и использовал этот метод практически для каждого важного решения в жизни. Он меня никогда не подводил».

Знаете, как делать списки «за и против»? Делите страницу пополам, и пишете все «за» и «против». Но описываемый инструмент добавляет одну важную деталь:

«На листе бумаги перечислите все положительные моменты интересующей вас темы, и оцените каждую по шкале от нуля до десяти. Чем больше оценка, тем больше её важность для вас.

На другом листе перечислите все отрицательные моменты, и оцените их также по шкале от нуля до десяти – где „десять“ означает очень сильный недостаток».

Дальше надо сложить очки, но для этого есть одно условие:
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments31

Как работают профессионалы. Михаил Шкляев, заместитель директора агентства AdWatch Isobar

Reading time2 min
Views6.8K
«Как работают профессионалы» вновь на «Мегамозге», представляет читателю еще одного высококлассного специалиста российского рынка IT.

На этот раз в нашем фокусе Михаил Шкляев – заместитель главного директора рекламного агентства AdWatch Isobar. Незамедлительно передаем ему слово.
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments3

Готовые решения #3. Александр Белов

Reading time28 min
Views3.2K
В гостяхАлександр Белов
ВедущийСергей Горшенин

image

Дорогие друзья! Я рад приветствовать вас в студии программы «Готовые решения», и без лишних слов представляю гостя нашей студии: сегодня это Александр Белов, руководитель группы компаний «Белов и партнёры». Александр, здравствуй!
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments0

Vim по полной: Компиляция и выполнение чего угодно

Reading time3 min
Views27K

Оглавление


  1. Введение (vim_lib)
  2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
  3. Уровень проекта и файловая система (vim_prj, nerdtree)
  4. Snippets и шаблоны файлов (UltiSnips, vim_template)
  5. Компиляция и выполнение чего угодно (vim-quickrun)
  6. Работа с Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестирование с помощью xUnit (vim_unittest)
  9. Библиотека, на которой все держится (vim_lib)
  10. Другие полезные плагины

Как можно назвать редактор удобным, если он не умеет запускать то, что мы программируем? Особенностью описываемого мной в данной статье плагина, является возможность запуска чего угодно, будь то программный код, plantUML, LaTeX, Less и всего, что можно написать и запустить. Плагин vim-quickrun может показаться довольно запутанным и сложным, не смотря на прекрасную документацию, потому я решил коротко осветить его в этой статье, дабы вы могли быстрее начать им пользоваться.
Выполнить
Total votes 15: ↑15 and ↓0+15
Comments28

Скруглы — border-radius inset для картинок

Reading time2 min
Views20K


Некоторое время назад появилась задача для дизайнера сделать стилизованный под дикий запад сайт. Мне, как верстальщику, пришла задача от дизайнера сделать картинки и некоторые бэкграунды, стилизованные под дикозападские вывески. На каждой странице в неизвестном количестве и неизвестных размеров. Задача усугублялась сложным фоном и необходимостью прозрачных дырок в изображениях. Т.е. нужно было использовать border-radius:inset, которого, как оказалось, не существует… Нарезать кучу картинок под каждую страницу и случай, само-собой, нереально и бессмысленно. Заказчик не был одним из «адептов explorer 6», поэтому я решил упростить себе жизнь связкой jQuery и HTML5.
Читать дальше →
Total votes 27: ↑20 and ↓7+13
Comments20

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Reading time8 min
Views86K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Total votes 113: ↑112 and ↓1+111
Comments77

Jii — JavaScript фреймворк с архитектурой от Yii 2

Reading time12 min
Views26K

Вступление


Привет всем хабровчанам, любителям Yii и Node.js.
Продалжаю серию статей про фреймворк Jii и его части. В прошлых частях мы рассмотрели части фреймворка, которые можно использовать без инициализации приложения, а именно — Query Builder и Active Record. Из голосования (а так же писем и комментариев) стало понятно, что продолжать стоит. И на этот раз мы будем говорить о архитектуре и структурных составляющих фреймворка Jii.
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments73

Ретроспектива разработки Crash Bandicoot, или как разработчики упаковывали целые игры в 2MB RAM

Reading time3 min
Views76K
Вот вам анекдот из конца 90-ых. Я (Dave Baggett) был одним из двух программистов (вместе с Andy Gavin), разрабатывающих Crash Bandicoot для PlayStation 1.



Оперативная память была главной проблемой даже в те времена. У PS1 было всего 2MB RAM, и нам приходилось совершать безумные вещи, чтобы уместить в них игру. У нас были уровни, содержащие более 10MB чистых данных, и эти 10 мегабайт должны были постранично загружаться и выгружаться в память динамически, без каких-либо видимых задержек для игрока, при фреймрейте в 30 кадров в секунду.
Читать дальше →
Total votes 109: ↑107 and ↓2+105
Comments31

Ночные кошмары Питона: неявный `this`

Reading time3 min
Views27K
Обсуждение статьи "Не совсем крутой Ruby" зашло достаточно далеко: недостатки и достоинства Ruby между делом перетекали в обсуждение недостатков и достоинств Python. Не сильно удивило то, что передача self в качестве первого аргумента метода класса, некоторым хабравчанам кажется лишней. Ну что ж, не хотите явного self, будет вам неявный this! Под катом, немного магии на чистом Python.
Читать дальше →
Total votes 63: ↑58 and ↓5+53
Comments18

Как перевести сайт целиком на постоянный HTTPS для всех

Reading time6 min
Views44K

Шифруем всё подряд


Эра незашифрованного веба проходит, и это хорошо. В этой инструкции мы предполагаем, что на вашем сервере работает веб-сервер Nginx. И теперь мы сделаем так, чтобы все посетители сайта пользовались исключительно протоколом HTTPS. Кроме этого мы включим HSTS – это «HTTP Strict Transport Security», когда сайт не только поддерживает HTTPS, но и настаивает на его использовании.

Для этого есть множество способов, но я опишу метод под названием «HTTPS termination». Иначе говоря, мы поставим перед веб-сервером обратный прокси, который и будет обеспечивать HTTPS. Это получается проще и гибче, чем настраивать HTTPS только при помощи возможностей веб-сервера. Возможно, вам покажется контринтуитивным, что добавление ещё одного приложения в стек упростит вашу жизнь – но это действительно так.

Уточним, что данный рецепт подходит для серверов на базе Linux, на которых установлен Nginx.

То, что будет работать прежде всех остальных приложений в стопке – это HAProxy. Это в первую очередь приложение для балансировки – он умеет распределять приходящие запросы между разными физическими серверами. Много высоконагруженных сайтов используют его в этом качестве (тот же reddit), но в последней версии у него появилась возможность выполнять SSL termination. Он умеет устанавливать HTTPS-соединения от имени сервера.

Поэтому мы поставим HAProxy, скормим ему наши сертификаты SSL/TLS, поручим перенапрявлять все HTTP запросы на HTTPS, и покажем ему уже сам веб-сервер в качестве бэкенда.
Читать дальше →
Total votes 63: ↑49 and ↓14+35
Comments38

Я тебя по сетям вычислю: используем API крупнейших соцсетей в своих корыстных целях

Reading time11 min
Views175K


Ни для кого не секрет, что современные социальные сети представляют собой огромные БД, содержащие много интересной информации о частной жизни своих пользователей. Через веб-морду особо много данных не вытянешь, но ведь у каждой сети есть свой API… Так давай же посмотрим, как этим можно воспользоваться для поиска пользователей и сбора информации о них.

Есть в американской разведке такая дисциплина, как OSINT (Open source intelligence), которая отвечает за поиск, сбор и выбор информации из общедоступных источников. К одному из крупнейших поставщиков общедоступной информации можно отнести социальные сети. Ведь практически у каждого из нас есть учетка (а у кого-то и не одна) в одной или нескольких соцсетях. Тут мы делимся своими новостями, личными фотографиями, вкусами (например, лайкая что-то или вступая в какую-либо группу), кругом своих знакомств. Причем делаем это по своей доброй воле и практически совершенно не задумываемся о возможных последствиях. На страницах журнала уже не раз рассматривали, как можно с помощью различных уловок вытаскивать из соцсетей интересные данные. Обычно для этого нужно было вручную совершить какие-то манипуляции. Но для успешной разведки логичнее воспользоваться специальными утилитами. Существует несколько open source утилит, позволяющих вытаскивать информацию о пользователях из соцсетей.
Читать дальше →
Total votes 89: ↑83 and ↓6+77
Comments22

Как создать искусственный интеллект? История первая. Что такое интеллект?

Reading time6 min
Views104K
image

В серии статей мы расскажем о новых подходах в ИИ, моделировании личности и обработке BIG Data, которые недоступны для большинства специалистов по ИИ и общественности. Ценность этой информации в том, что она вся проверена на практике и большинство теоретических наработок реализованы в прикладных проектах.

Многие из вас слышали про современные технологии, которые ассоциируются сегодня с понятием искусственный интеллект, а именно: экспертные системы, нейронные сети, лингвистические алгоритмы, гибридные системы, когнитивные технологии, имитационные(чат-боты) и пр.

Да, многие компании с помощью приведенных выше технологий решают задачи своих клиентов по обработке информации. Некоторые из этих компаний пишут, что создают или создали решения в области искусственного интеллекта. Но интеллект ли это?
Читать дальше →
Total votes 18: ↑12 and ↓6+6
Comments74

Красивая печать в PDF из Django

Reading time6 min
Views20K
Т.к. эта статья — результат нескольких лет экспериментов, то букв будет много. Но — возможно — она сэкономит кому-то многие месяцы езды велосипедом по граблям, которые и описаны.
В общем случае речь идет даже не о Django, а о печати регламентированных документов из python с использованием шаблонизаторов.
Кому дальше читать лень — сразу скажу — проблема до конца не решена. Но более-менее рабочий вариант вырисовался.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments29

Главные уязвимости корпоративных информационных систем в 2014 году: веб-приложения, пароли и сотрудники

Reading time5 min
Views18K


Векторы атак для преодоления сетевого периметра

Сложность проведения атак в 2014 году оказалась заметно ниже, чем в предыдущие годы, а преодолеть сетевой периметр в 60% систем оказалось возможно через уязвимости веб-приложений. Также в 2014 году существенно снизился уровень осведомленности сотрудников компаний по вопросам безопасности: они стали во много раз чаще переходить по незнакомым ссылкам и открывать приложенные к письмам файлы. Такие наблюдения содержатся в исследовании компании Positive Technologies на основе тестов на проникновение, проводившихся в 2014 году, и сравнения полученных данных с прошлогодними результатами. В данном статье мы поделимся некоторыми результатами исследования.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments2

Принципы анимации для веба

Reading time8 min
Views93K
Примечание переводчика: Представленный ниже материал содержит значительное количество технических терминов, при переводе которых могут возникнуть неточности. Если вы заметили опечатку, ошибку или неточность перевода — напишите нам, и мы оперативно всё исправим.

Кроме того, в продолжение темы сегодняшней публикации на одну неделю будет открыт продвинутый курс академии по CSS-анимациям, который обычно доступен по подписке. Его описание размещено в конце топика.




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

На самом деле анимация может быть мощным инструментом, который позволяет посетителям сайта и клиентам легче взаимодействовать с интерфейсом продукта и быстрее добиваться своих целей. Этого можно достичь, если следовать в своей работе некоторым основополагающим принципам.
Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments18

(Архив) 10 причин попробовать Матрешку

Reading time3 min
Views27K
image

1. Чистый JavaScript и HTML


Многие фреймворки пытаются починить веб, создавая собственный язык программирования. Идея Матрешки проста: с вебом всё в порядке. Вся логика, которую пишет программист, находится, как и должна, в JavaScript файлах, а HTML остаётся языком разметки гипертекста. Шутка об HTML программисте должна остаться шуткой.

2. Минимум сущностей


Матрешка не требует создания избыточных сущностей. Благодаря простому синтаксису привязок, связь между JavaScript и HTML может быть описана там же, где и логика. Программисту не требуется задумываться сразу о нескольких вещах, размышляя о балансе полномочий объектов. Вопрос где прописать обработчик: во “вьюхе” или в контроллере отпадает сам по себе. Хотя, никто не запрещает разделить данные и контроллер, разместив их в разных JS файлах.

3. Работай с данными, забудь о представлении


Попробовав популярный (но уступающий под натиском более современных продуктов) фреймворк Backbone, сталкиваешься с серьезным неудобством: объявляя данные, зависящие от UI и UI, зависящий от данных, вам, как правило, требуется создать два обработчика события. Один ловит изменения данных, второй ловит пользовательские действия. Проблема подкрепляется еще тем, что HTML элементы, как правило, совершенно идентичны в рамках приложения: input, select, кастомные виджеты из jQuery UI могут многократно встречаться на странице. Программисту, который реализует еще одну “единицу” приложения (например, форму), приходится пользоваться “копипастой”.

С Матрешкой всё намного проще. Вам нужно лишь однажды объявить привязку (в одном месте, а не в двух), затем работать с данными (как с обычными JavaScript объектами), забыв, что у нас вообще есть представление.
Читать дальше →
Total votes 43: ↑31 and ↓12+19
Comments37

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

Reading time21 min
Views53K
Кручинин Дмитрий, Долотов Евгений, Кустикова Валентина, Дружков Павел, Корняков Кирилл

Введение


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

Глубокое обучение (deep learning) рассматривает методы моделирования высокоуровневых абстракций в данных с помощью множества последовательных нелинейных трансформаций, которые, как правило, представляются в виде искусственных нейронных сетей. На сегодняшний день нейросети успешно используются для решения таких задач, как прогнозирование, распознавание образов, сжатие данных и ряда других.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments20

Coursera открыла курсы эффективного обучения

Reading time2 min
Views17K
image

C 1 марта в Калифорнийском университете в Сан-Диего стартовал онлайн-курс, на котором расскажут, как учиться с высокой результативностью. Все ошибки учащихся, все приёмы и техники эффективной учебы будут рассмотрены на этом тренинге. Желающих участвовать — уже более 100 тысяч человек.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments12

Вы неправильно пишете животных

Reading time5 min
Views358K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Total votes 442: ↑438 and ↓4+434
Comments351

Как оценивать работу программиста? Мнение сотрудников Яндекса

Reading time7 min
Views59K
Давно идут споры о том, что такое работа программиста — ремесло, навык или искусство. При этом постоянно встаёт вопрос оценки результата. О том, как разные разработчики и руководители в Яндексе подходят к вопросу оценки работы программиста, мы поговорим в этом посте.



В Яндексе работают сотни программистов, и результаты их работы влияют на сервисы, которыми пользуются миллионы людей. Когда на тебе такая ответственность, нужно уметь остановиться и оценить, что можно сделать лучше, в чем ты сильнее всего и где эти твои навыки пригодятся еще. Для этого надо уметь оценить и свою работу, и работу людей, с которыми ты вместе что-то создаешь. О том, как это делать, мы и спросили наших коллег.
Читать дальше →
Total votes 66: ↑48 and ↓18+30
Comments47

Information

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

Specialization

Backend Developer, Frontend Developer
Python
Linux
Docker
PostgreSQL
ClickHouse
Git
Nginx
JavaScript
React