Search
Write a publication
Pull to refresh
0
Send message

PostgreSQL: Приемы на продакшене

Reading time9 min
Views91K
Можно прочитать много книг по базам данных, написать кучу приложений на аутсорс или для себя. Но при этом невозможно не наступить на грабли, при работе с действительно большими базами/таблицами особенно, когда downtime на большом проекте хочется свести к минимуму, а еще лучше совсем избежать. Вот здесь самые простые операции, как например изменение структуры таблицы может стать более сложной задачей. Наиболее интересные случаи, проблемы, грабли и их решения из личного опыта с которыми нам на проекте Pushwoosh пришлось столкнуться описаны под катом. В статье нет красивых картинок, зато есть много сухого текста.

image
Читать дальше →

Почему программировать легко

Reading time8 min
Views68K
Прочитал я тут на Хабре отличную статью «Почему программировать так тяжело?» и сразу проникся к ней симпатией. «Боже мой!» — подумал я. Наконец-то можно показать толковый и взвешенный текст некоторым моим знакомым, считающим меня высокооплачиваемым бездельником, объяснить родственникам, что это за работа такая — «кнопки целый день тыкать» и предоставить защитившим кандидатские диссертации друзьям доказательства того, что и я тут тоже не коровам хвосты кручу в рабочее время. «Какая прекрасная статья!» — думал я. Наконец-то кто-то понял всю суть работы программиста и объяснил её сложность понятным языком!

И лишь одной малюсенькой детали в этой статье не хватало. Правды.


Правды о том, что программировать легко и приятно, что сложности надуманы, а плюсы работы — недооценены. И я думаю стоит исправить эту несправедливость, написав такую статью. И нет, я не буду тут скатываться в трёп о высоких зарплатах, востребованности на рынке и высокой мобильности. Это всё ведь не о программировании, это о стиле жизни программиста, что не совсем то. А мы ведь на Хабре, а не на Мегамозге каком-то, поэтому давайте рассмотрим именно программирование, во всей его завораживающей красоте и устрашающей мощи!
Читать дальше →

Программирование — не тяжелый физический труд, но все равно отстой

Reading time10 min
Views54K
Peter Welch
30 апреля 2014 г.
Об авторе. Peter Welch писатель и программист, автор книги «And Then I Thought I Was a Fish», автор блога «Still Drinking».


Изображение: Joe Raedle/Getty Images

Каждый мой друг, хотя бы дважды в неделю поднимающий на работе что-то тяжелее ноутбука, рано или поздно в разговоре невзначай бросает что-то вроде: «Бро, ты не пашешь на износ. Я только что отработал 4700-часовую неделю, копая тоннель под Мордором, используя отвертку»

Они правы. Мордор — отстой, и копание тоннеля гораздо трудозатратнее, чем тыкание в клавиши, если конечно вы не муравей. Но для галочки, давайте договоримся о том, что стресс и безумие — это плохо? Отлично.
Добро пожаловать в мир программирования

Эффективная работа с SQLite на примере ICQ

Reading time9 min
Views29K
Как и во многих других приложениях, нам в мобильном ICQ приходится хранить достаточно много информации: сообщения, контакты и тому подобное. Когда количество запросов к этим данным достигает какого-то критического значения, приложение начинает тормозить. Долгий запуск, медленное открытие чата, медленная отправка сообщений, постоянные спиннеры — все это жутко напрягает. Чаще всего причиной тормозов является неудачная работа с данными. В статье я хочу поделиться нашим опытом рефакторинга структуры данных, оптимизации запросов и некоторыми удобными приемами для миграции.

Несколько слов об исходной задаче. Основная сущность у нас — профиль ICQ, у которого есть список контактов, а у тех есть сообщения. Наше приложение существует уже много лет, разрабатывалось разными людьми с разными подходами, номер версии основной БД уверенно приближался к 30. Кроме того, количество фич в продукте невозможно предсказать заранее, это тоже повлияло на архитектуру. В общем, модель данных изначально была примерно такой:

Читать дальше →

Аудит безопасности сайта глазами заказчика

Reading time4 min
Views24K


В этом топике я хочу рассказать, как проходит коммерческий аудит безопасности сайта, в чем отличие от bug bounty программ и «свободного рисерча».
Читать дальше →

Выбираем правильную флэшку USB 3.0

Reading time4 min
Views122K
Рано или поздно любая техническая вещь переходит в разряд холодильника, т.е. покупая ее большинство думает скорее о внешнем виде и вместимости, чем о характеристиках. Собственно, так давным-давно произошло с USB-флэшками – многие мои знакомые, готовые с пеной у рта обсуждать скоростные характеристики какого-нибудь SSD, когда дело касается флэшек, машут рукой и покупают красивенькую известной фирмы (чаще всего Kingston или Silicon Power). Потому как «…а чё там выбирать то? Флэшка и есть флэшка».

А между тем, выбирать есть из чего. Скоростные характеристики отдельных USB-драйвов могут превосходить среднерыночные этак раза в 4-ре. При этом цена на них не будет заоблачной.



Читать дальше →

Серии Фейнмана [Озвучка Vert Dider]

Reading time1 min
Views33K


«Серии Фейнмана» — образовательный проект, созданный с целью повысить уровень научной грамотности в обществе. От создателей «Серий Карла Сагана».
Читать дальше →

Как определить поддельную Micro SD флеш карту

Reading time8 min
Views187K
Micro SD подделки

Предисловие


В последнее время Micro SD карты становятся всё более популярны. По этому поводу появляется всё больше продавцов, готовые на этой почве поживиться обманом и разными уловками на эту тему.
Понадобилась мне как-то Micro SD карта ёмкостью 64ГБ для небольшого проекта на Raspberry Pi. Но когда я стал искать что-то подходящее на eBay, то с удивление обнаружил, что подавляющее число продавцов выставляют откровенные подделки. Даже на Амазоне ситуация была не очень привлекательна в этом плане. На картинке выше все карты являются подделками.

После этого я решил заказать несколько таких подделок и поделиться этим тут, что бы обезопасить остальных не только от потери денег, но и от потери данных. А ведь данные зачастую дороже.

Обещаю слайды.
Много слайдов. Трафик. Без SMS.

Интеграция Unity с Google Таблицами

Reading time9 min
Views29K


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

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

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

Интервью о техническом долге

Reading time20 min
Views8.2K
Что такое технический долг? Можно ли понимать его, как плохое исполнение разработчиками своих обязанностей? Возможно ли избежать появления технического долга, и следует ли его избегать? Как связан технический долг с архитектурой приложения и с доверием между заказчиком и исполнителем? Какие стратегии применяются для контроля технического долга?

Предлагаю вашему вниманию перевод интервью, вышедшего в подкасте «Software Enginering Radio» в апреле 2015 года. Свен Йохан и Эберхард Вольф обсуждают внутреннее и внешнее качество ПО, вспоминают общепринятые модели качества и стратегии, направленные на поддержание внутреннего качества ПО. Технический долг, в основном, рассматривается в контексте управления программными проектами.



Читать дальше →

Архивы и спираль истории

Reading time6 min
Views6.8K
О стремительном росте объёмов информации, генерируемой во всём мире, говорится на каждом углу. Обычно об этом вспоминают, когда речь заходит о сетевой инфраструктуре, клиентском контенте, поисковых технологиях и многих других вещах. Та же самая ситуация наблюдается и в корпоративном сегменте: в большинстве организаций многократно растут объёмы хранимой информации. Согласно отчёту Forrester Research, около 85% данных в корпоративных системах представляет собой статичный контент, который уже никогда не будет меняться. Всевозможные требования властей и регуляторов обязывают организации хранить различную информацию за несколько лет (например, информацию по всем клиентам и совершённым сделкам и т.д.). В результате бизнесу приходится тратить значительные средства на обеспечение хранения этой информации, вкладываясь в парк серверов, СХД, приобретение ПО и т.д.

Ещё одним следствием роста объёмов хранимых данных стало желание многих компаний иметь возможность проводить анализ и поиск по всему имеющемуся объёму накопленной информации. С определённого момента такая задача превращается в задачу обработки Big Data. Как следствие, возникает необходимость поиска решений, больше подходящих для хранения и работы с подобными массивами информации. Поэтому многие ищут более выгодные решения для хранения подобных массивов информации и работы с ними.

Любопытен пример компании Nokia, недавно продавшей своё мобильное подразделение Microsoft. Согласно условиям контракта, финны должны были передать новому владельцу весь информационный архив подразделения. Учитывая большой объём данных, в Nokia подошли к этому творчески: была приобретена компактная система архивного хранения, в базу данных которой залили всю необходимую информацию, а затем всю эту систему целиком просто отправили в Microsoft.
Читать дальше →

Статистический анализ ассоциативных правил в результатах опросов

Reading time7 min
Views7.1K
В предыдущей части статьи был рассмотрен метод поиска ассоциативных правил в данных европейского социального исследования. Эта часть о статистическом анализе полученных правил. Ключевой момент в том, что классические статистические методы, например, критерий согласия хи-квадрат, не имеют основания быть использованными для результатов опроса. Но по каким причинам? И как проверять гипотезы? Об этом пойдет речь в этой публикации.



Читать дальше →

Как я укрощал Windows Update и получал инвайт на резерв Windows 10

Reading time6 min
Views31K
Сегодня я поведаю одну историю, которая, возможно, будет являться квинтэссенцией всего полезного материала, которым я пользовался на протяжении всего этого тернистого пути.

В далёком-далёком 2014-м году, в холодном-холодном (кстати, не таком уж и холодном) ноябре месяце мой лэптоп мезозойского 2010-го года выпуска после внезапного отключения электроэнергии во время установки обновлений схватил хард-свичофф. Ну, думаю, бывает, включил его, и как ни в чем не бывало продолжил работу. Но уже на следующий день, после еженедельной пачки апдейтов для ОС, я заметил весьма странную вещь: при запланированной после наката очередного KBxxxxxx перезагрузке системе «Не удаётся завершить обновления», о чём она недвусмысленно повествует нам перед появлением логон-скрина.
Читать дальше →

Выбор между C++ и C#

Reading time8 min
Views298K
Попробую поднять спорную, но, думаю, интересную тему. Для начала представлюсь. По роду деятельности я специализируюсь на разработке десктопных приложений под Windows, поэтому по большей части с этой позиции и буду выполнять сравнение.

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

Отдельных статей требует рассмотрение выбора Java или же интерпретируемых языков. Они будут предпочтительнее, чем С++ или С# в некоторых случаях, однако вынесем такие случаи за рамки данной статьи и сфокусируемся на сравнении С++ и С#.

Для ясности обозначу, что под C++ буду понимать unmanaged код, а под C# — managed код. В статье можно было сравнить managed и unmanaged, но это было бы менее полезно практический. А mixed код, хотя он и представляет некоторый интерес, оставим по большей части за рамками данной статьи.

Прошу извинить за некоторую категоричность высказываний, однако, думаю, она требуется для более точного донесения мыслей. Сравнивать буду по критериям, давая по каждому некоторое заключение основанное на личной практике, фундаментальных основах и известному опыту использования. Итак, начнем.
Читать дальше →

Полезные навыки digital-ниндзя, которым можно научиться онлайн

Reading time1 min
Views5.9K
Современный специалист, работающий в области digital, должен разбираться не только в интернет-пространстве и технологиях, но и обладать знаниями в области управления, системного мышления, копирайтинга, маркетинга и многим другим. Благо, всему этому сегодня можно научиться бесплатно и не выходя из дома. Как? Этот обзор вам в помощь!

Управление проектами

Основы проектного управления
Модель мышления
Сценарное прогнозирование
Управление проектами: основы успеха
Читать дальше →

Databene Benerator — бенерируй это

Reading time12 min
Views8.1K
«Достань словарь и посмотри, что такое «катарсис». Если это то, чем он хочет нас замочить, я хочу знать, что это такое.» (с) Анализируй это!

Введение


Поздним вечером, когда проектирование базы данных на 64 таблицы было почти завершено, а интерфейс для их заполнения еще даже не начинался, встал вопрос о том, как их все-таки заполнить данными.
Заполнить в ручную — идея была откинута в сторону сразу.
«Надо что-то накодить!» — кричала душа.
«Надо что-то скачать!» — настаивал разум!
В результате прошвырнувшись по Интернету и найдя с десяток разного рода решений как устанавливаемых, так и SaaS, как платных, так и бесплатных — нашел я его — databene-benerator- генератор связанных данных (фикстур) для баз данных. И статью на русском, с описанием возможностей и синтаксиса (1), а так же ее, но на английском (2). Я понял — это то, что нужно! Но откуда его взять? Как его использовать под Windows? Удобно? С поддержкой русских символов?

И так «катарсис» (3) — понятие в античной философии; термин для обозначения процесса и результата облегчающего, очищающего и облагораживающего воздействия на человека различных факторов.

Как это связано с темой публикации? Вы поймете, если прочтете это. Приглашаю под cut!
Читать дальше →

Реддитское восстание и проблема коммерциализации сообществ

Reading time3 min
Views9K
Недавний бунт на Reddit утих, но не закончился. История протестов в онлайн-сообществах насчитывает более 30 лет. (У сервиса Imgur, где я ещё недавно работал, в июне было собственное восстание: недовольные пользователи «захватили главную страницу».) Но Reddit — самое крупное онлайн-сообщество за всю историю. И это делает его заманчивым объектом для экспериментов по управлению сообществом и его коммерциализации. Каждый мятеж отличается от других, но есть у них и общие черты.

Реддитское восстание и проблема коммерциализации сообществ
Читать дальше →

Data Access Object (DAO). Уровень класса

Reading time3 min
Views165K
При проектировании информационной системы выявляются некоторые слои, которые отвечают за взаимодействие различных модулей системы. Соединение с базой данных является одной из важнейшей составляющей приложения. Всегда выделяется часть кода, модуль, отвечающающий за передачу запросов в БД и обработку полученных от неё ответов. В общем случае, определение Data Access Object описывает его как прослойку между БД и системой. DAO абстрагирует сущности системы и делает их отображение на БД, определяет общие методы использования соединения, его получение, закрытие и (или) возвращение в Connection Pool.
Читать дальше →

4 убийцы конверсии на Landing Page

Reading time3 min
Views9.2K
Конверсия Landing Page – вопрос, который волнует как владельцев бизнеса, так и веб-мастеров. В интернете существует тысячи статей о повышении конверсии. Мы же расскажем о четырех ключевых ошибках, убивающих конверсию через текст, и как их исправить.

image

Читать дальше →

Собираем базу людей из открытых данных WhatsApp и VK

Reading time15 min
Views220K
Etan Hunt
кадр из фильма Миссия Невыполнима II

Эта история началась пару месяцев назад, в первый день рождения моего сына. На мой телефон пришло СМС-сообщение с поздравлением и пожеланиями от неизвестного номера. Думаю, если бы это был мой день рождения мне бы хватило наглости отправить в ответ, не совсем культурное, по моему мнению, «Спасибо, а Вы кто?». Однако день рождения не мой, а узнать кто передаёт поздравления было интересно.

Первый успех


Было решено попробовать следующий вариант:
  • Добавить неизвестный номер в адресную книгу телефона;
  • Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
  • Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.

Мне повезло и в моём случае в списке контактов Viber рядом с вновь созданным контактом появилась миниатюра фотографии, по которой я, не открывая её целиком, распознал отправителя и удовлетворенный проведенным «расследованием» написал смс с благодарностью за поздравления.

Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.
Далее перебор аккаунтов WhatsApp и VK по Москве и Ненецкому АО и распознание лиц

Information

Rating
Does not participate
Date of birth
Registered
Activity