Как стать автором
Обновить
3
0

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

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

Трудности перехода с Windows на Mac и можно ли полностью отказаться от Windows?

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

Многие пользователи WIndows поругивают ее последние версии. И даже заявляют что семерка была лучшей из всех. Я бы если честно, даже и XP еще использовал. Или Linux для decktop.

Общеизвестно (хотя есть и спорящие), что лучшим ноутбуком для Винды является макбук. Что лично для меня не подлежит сомнению. Я 10 лет назад перешел на Apple, чему весьма рад. Но вытянуть меня окончательно из болота Windows пока невозможно.

Читать далее
Всего голосов 23: ↑10 и ↓13+2
Комментарии139

Фреймворки против Битрикс

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

Все «за» и «против» 1С-Битрикс, какие есть альтернативы и что выгоднее знать разработчику?

Читать далее
Всего голосов 15: ↑11 и ↓4+12
Комментарии37

Кажется, у меня появился джун

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров18K

— Привет! Мы решили нанять тебе помощника на текущий проект, нашли подходящего кандидата. Кстати, он выходит в понедельник.
— Эммм, окей.

Читать далее
Всего голосов 20: ↑15 и ↓5+11
Комментарии12

Расшифровка моего интервью с автором Ruby

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

Во время осенней конференции Ruby Russia я, на правах организатора, поймал в кулуарах автора Ruby и устроил ему часовой допрос интервью. Вопросы старался выбирать незаезженные, чтобы ответы были нам полезны, а не “за все хорошее против всего плохого”. И дедушка таки смог меня, старого плюсового разработчика, удивить! Под катом — расшифровка интервью, нетривиальное мнение Юкихиро Мацумото про типы вообще и руби в частности, а также возможность все это обсудить в комментах. На связи я с руби-командой Evrone наперевес. Мацумото мы приглашаем в Москву регулярно, есть возможность заранее придумать интересные вопросы для будущих интервью.
Всего голосов 26: ↑25 и ↓1+37
Комментарии4

Понимание джойнов сломано. Это точно не пересечение кругов, честно

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

Так получилось, что я провожу довольно много собеседований на должность веб-программиста. Один из обязательных вопросов, который я задаю — это чем отличается INNER JOIN от LEFT JOIN.


Чаще всего ответ примерно такой: "inner join — это как бы пересечение множеств, т.е. остается только то, что есть в обеих таблицах, а left join — это когда левая таблица остается без изменений, а от правой добавляется пересечение множеств. Для всех остальных строк добавляется null". Еще, бывает, рисуют пересекающиеся круги.


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


Дело в том, что этот ответ в общем случае неверен. Ну или, как минимум, не точен.

Читать дальше →
Всего голосов 179: ↑138 и ↓41+97
Комментарии225

Как думать на SQL?

Время на прочтение8 мин
Количество просмотров610K
Надо “SELECT * WHERE a=b FROM c” или “SELECT WHERE a=b FROM c ON *” ?

Если вы похожи на меня, то согласитесь: SQL — это одна из тех штук, которые на первый взгляд кажутся легкими (читается как будто по-английски!), но почему-то приходится гуглить каждый простой запрос, чтобы найти правильный синтаксис.


А потом начинаются джойны, агрегирование, подзапросы, и получается совсем белиберда. Вроде такой:


SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
  FROM books
  WHERE stock>(SELECT avg(stock)
    FROM books))
GROUP BY members.firstname, members.lastname;

Буэ! Такое спугнет любого новичка, или даже разработчика среднего уровня, если он видит SQL впервые. Но не все так плохо.


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

Читать дальше →
Всего голосов 54: ↑48 и ↓6+42
Комментарии166

Асинхронность — в django

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

Здравствуйте, дорогие читатели хабра и хаба про django. Да, эта статья о фреймворке для перфекционистов с дедлайнами и о том, как в нём не хватает асинхронности. По духу это больше похоже на Enhancement Proposal (менее формальный, чем он мог быть) или RFC, так что, если Вы любите подобные вещи, то Вам может быть интересно.

Вопросом добавления асинхронности сама Django Foundation тоже интересовалась. Дискуссии вылились в DEP-09, который описывает текущий примерный roadmap. Я даже неожиданно обнаружил, что мой этот пост ему не противоречит. Просто о нативной поддержке асинхронности там не очень много и написано. Это считается там последним этапом, до которого ещё нужно дойти. Напоминает мем про то, как рисовать сову: вначале рисуем два круга, потом дорисовываем остальное.

Но давайте, всё-таки, попробуем сделать django асинхронным. Точнее, django orm. Забыл сказать: я считаю django orm главным препятствием на пути django к асинхроннности. Это, как-никак, наибольшая по объёму часть. Потом, именно orm содержит тот набор допущений и характерных черт, которые делают django узнаваемым, как минимум.

Значит, orm. Драйвера базы данных нужны асинхронные, но такие, конечно, уже есть.

Читать
Всего голосов 7: ↑7 и ↓0+7
Комментарии10

История Heroku. Взлет и закат

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров14K

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

Чтобы понять, насколько революционным был их подход, давайте просто вспомним, что Heroku создала в 2007-2011 году. Я могу назвать как минимум 3 вещи - контейнеры, serverless и доставку кода через push в GIT. Во многом современный технологический ландшафт был вдохновлен решениями Heroku, увидевшими свет 15 лет назад.

В этой статье я хочу поговорить об истории компании и причинах утраты “былого величия” в наши дни. 

Начало истории Heroku

В 2007 году трое разработчиков Ruby — Джеймс Линденбаум, Адам Виггинс и Орион Генри — основали Heroku. Поначалу это был редактор кода в браузере. Проект вызывал “ВАУ эффект”, но не сильно вовлекал пользователей. С этим проектом основатели даже прошли Y Combinator. В ходе доработки платформы разработчики сделали, как им тогда казалось, второстепенную фичу - возможность разворачивать приложения из мастер ветки привязанного GitHub. Цель была простая - дать возможность разработчикам сразу понять, как работает их код. Почему фича казалась второстепенной? На тот момент GitHub только появился, и делать интеграцию с ним было далеко не очевидной идеей. 

Но однажды, анализируя то, как пользователи используют проект, основатели Heroku заметили, что многие клиенты используют только функцию развертывания приложений через push в GIT. И с этого момента началась новая страница развития сервиса.

Читать далее
Всего голосов 23: ↑18 и ↓5+20
Комментарии6

Django under microscope

Время на прочтение14 мин
Количество просмотров13K
Если по докладу Артёма Малышева (proofit404) будут снимать фильм, то режиссером выступит Квентин Тарантино — один фильм про Django он уже снял, снимет и второй. Все подробности из жизни внутренних механизмов Django от первого байта HTTP-запроса до последнего байта ответа. Феерия работы парсер-форм, остросюжетная компиляция SQL, спецэффекты реализации шаблонизатора для HTML. Кем и как управляется connection pool? Всё это в хронологическом порядке обработки WSGI-объектов. На всех экранах страны — расшифровка «Django under microscope».



О спикере: Артём Малышев — основатель проекта Dry Python и Core-разработчик Django Channels версии 1.0. Пишет на Python 5 лет, помогал организовывать митапы «Rannts» по Python в Нижнем Новгороде. Артём может быть знаком вам под ником PROOFIT404. Презентация к докладу хранится здесь.
Всего голосов 36: ↑35 и ↓1+34
Комментарии17

Взгляд в будущее: причудливая реальность интернета в Северной Корее

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


Для 25 миллионов жителей Северной Кореи доступ в интернет невозможен. Только несколько тысяч привилегированных членов общества могут получить доступ к глобальной сети. Но эта прослойка растет, и их запросы тоже увеличиваются. Мы знаем об этом очень мало, информация закрыта. Но есть организации и разные правозащитники, которые пытаются, что могут, анализировать.


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


Осторожно, дальше идет много фото с сайтов Северной Кореи.

Читать дальше →
Всего голосов 89: ↑67 и ↓22+66
Комментарии467

Мем айсберг SQL: погружение в глубины баз данных

Уровень сложностиСредний
Время на прочтение53 мин
Количество просмотров15K

Мем айсберг SQL: погружение в глубины изучения баз данных

Мем айсберг SQL — это вирусное интернет-изображение, изображающее айсберг с несколькими слоями. Вершина айсберга содержит общеизвестные концепции и инструменты SQL, такие как операторы SELECT и JOIN. Однако по мере погружения под воду становятся видны более абсурдные и малоизвестные аспекты SQL.

Читать далее
Всего голосов 23: ↑21 и ↓2+23
Комментарии6

У нас в Excel поселился замечательный Python

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров43K

На Хабре уже была новость об этом знаменательном событии. Правда, она похожа на пересказ официального пресс-релиза Microsoft, но такой и должна быть "новость".

Читать далее
Всего голосов 28: ↑26 и ↓2+32
Комментарии65

Жадные алгоритмы

Время на прочтение4 мин
Количество просмотров190K
ДеньгиДоброго времени суток, хабр! Сегодня я бы хотел рассказать про жадные алгоритмы.

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

Думаю, каждый программист в своей жизни хотя бы раз написал жадину, может быть, даже не задумываясь об этом. Что же это такое? Добро пожаловать под кат.
Читать дальше →
Всего голосов 106: ↑100 и ↓6+94
Комментарии17

Сравнение SQL- и NoSQL-баз данных

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров42K

SQL и NoSQL — две популярные модели баз данных, которые используют для решения различных задач. Чтобы понять, какая из них подойдёт в вашем случае, необходимо разобраться в их различиях, преимуществах и недостатках.

В этой статье я рассмотрю основные характеристики SQL- и NoSQL-баз данных и сравню их, чтобы помочь выбрать лучший вариант для вашего проекта.
Читать дальше →
Всего голосов 33: ↑25 и ↓8+28
Комментарии29

«Sarcazm ON» Россия тихо и незаметно ворвалась на рынок промышленных контроллеров! «Sarcazm OFF»

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



Но поскольку ролик сделан очень качественно, то я решил разобраться – что же там на самом деле. Компания заверяет что она создала и запустила в производство две линейки промышленных контроллеров, не уступающих аналогам от ведущих производителей. И это произошло тихо и незаметно, что странно в свете с текущим курсом правительства на импортозамещение.
Всего голосов 109: ↑103 и ↓6+97
Комментарии295

WebSocket-чат на Tornado для вашего Django-проекта

Время на прочтение28 мин
Количество просмотров68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

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

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →
Всего голосов 56: ↑43 и ↓13+30
Комментарии17

Как в компании развивался Python. Доклад Яндекса

Время на прочтение19 мин
Количество просмотров15K
13 лет назад начался эксперимент по использованию Python в больших сервисах Яндекса. Эксперимент получился удачным (кто бы сомневался!) и Python начал свое победное поползновение по сервисам компании. Яндекс.Афиша, Яндекс.Погода — через некоторое время сервисов стало очень много. Вместе с ними начали появляться «лучшие практики» и «устоявшиеся подходы» к решению задач.


В докладе я вспомнил эволюцию Python в компании: от первых сервисов, запаковывавшихся в deb-пакеты и раскатывавшихся на голое железо, до непростого монорепозитория с собственной системой сборки и облаком. Еще в рассказе будут Django, Flask, Tornado, Docker, PyCharm, IPv6 и другие штуки, с которыми мы сталкивались на протяжении этих лет.
Читать дальше →
Всего голосов 20: ↑16 и ↓4+22
Комментарии6

Устройство CPython. Доклад Яндекса

Время на прочтение21 мин
Количество просмотров33K
Мы публикуем конспект вступительной лекции видеокурса «Бэкенд-разработка на Python». В ней Егор Овчаренко egorovcharenko, тимлид в Яндекс.Такси, рассказал о внутреннем устройстве интерпретатора CPython.


— Если кратко, какой у нас будет план? Сначала мы поговорим о том, почему будем изучать именно Python. Затем посмотрим, как работает интерпретатор CPython более глубоко, как он управляет памятью, как устроена система типов в Python, на словари, генераторы и исключения. Я думаю, это займет примерно час.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+23
Комментарии1

Что такое UEFI, и чем он отличается от BIOS?

Время на прочтение5 мин
Количество просмотров946K
image

Новые компьютеры используют прошивку UEFI вместо традиционного BIOS. Обе эти программы – примеры ПО низкого уровня, запускающегося при старте компьютера перед тем, как загрузится операционная система. UEFI – более новое решение, он поддерживает жёсткие диски большего объёма, быстрее грузится, более безопасен – и, что очень удобно, обладает графическим интерфейсом и поддерживает мышь.

Некоторые новые компьютеры, поставляемые с UEFI, по-прежнему называют его «BIOS», чтобы не запутать пользователя, привычного к традиционным PC BIOS. Но, даже встретив его упоминание, знайте, что ваш новый компьютер, скорее всего, будет оснащён UEFI, а не BIOS.
Читать дальше →
Всего голосов 36: ↑25 и ↓11+14
Комментарии145

Оказывается, в Windows тоже есть перенаправления, пайпы, свой /dev, /dev/null, /etc/fstab, grub.cfg

Время на прочтение5 мин
Количество просмотров92K
Разделы можно пропускать без ущерба для понимания, ровно как и любые непонятные/неинтересные места в них.

Перенаправления


Как обычно:

echo foo > bar
echo foo 2> bar
echo foo > bar 2>&1

Читать дальше →
Всего голосов 201: ↑136 и ↓65+71
Комментарии137
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer, Web Developer
Git
SQL
Python
Django