Обновить
0
0

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

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

О плюсах и минусах Go

Время на прочтение16 мин
Охват и читатели54K
В данной статье я хочу поделиться опытом, полученным в ходе переписывания одного проекта с Perl на Go. В ней будет больше о минусах, чем о плюсах, ибо о достоинствах Go и так поведано немало, а вот о подводных камнях, ожидающих новых разработчиков, узнать зачастую, кроме как от собственных шишек — неоткуда. Пост никоим образом не преследует цели охаять язык Go, хотя, признаться, некоторые вещи я был бы рад не писать. Также в нем охвачено сравнительно небольшой срез всей платформы, в частности, не будет ничего о шаблонах, регекспах, распаковке/запаковке данных и подобного, часто используемого в веб-программировании, функционала.
Читать дальше →

Почему Go — это плохо продуманный язык программирования

Время на прочтение9 мин
Охват и читатели92K
Это перевод статьи юзернейма tucnak с Medium, которая получила обширное обсуждение на reddit.com/r/programming.

image
Окей, заголовок действительно несколько громкий, признаю. Cкажу больше: я прусь от громких заголовков, все из-за внимания. В этой блогозаписи я постараюсь доказать тот факт, что Go это ужасно продуманный язык (спойлер: это так). Я уже играюсь с Go уже на протяжении нескольких месяцев, первый helloworld собрал, кажется, в июне. Математик из меня никакой, но с тех пор прошло уже что-то около 4 месяцев и я даже успел залить на Github несколько репозиториев и собрать немного звезд! Стоит также упомянуть, что у меня совершенно нет опыта применения Go в продакшне, так что любые мои слова о «поддержке кода» или «деплое» не стоит принимать за единственноверную истину.

Я люблю Go, я полюбил его как только впервые попробовал его. Я потратил несколько дней на то, чтобы принять идиоматику, смириться с отсутствием дженериков, разобраться с откровенно странным способом обработки ошибок и вы знаете, всеми этими классическими проблемами, так или иначе связанными с Go. Я прочел Effective Go, много статеек из блога Dave Cheney, следил за всеми новостями из мира Go. Я даже могу сказать, что я достаточно активный участник сообщетсва! Я люблю Go и ничего не могу с этим поделать — Go просто замечательный. Тем не менее, я считаю, что Go это ужасный плохо продуманный язык, который делает совершенно не то, что «продает».
Читать дальше →

Настройка pgpool-II + PostgreSQL + Streaming replication + Hot standby в среде AWS

Время на прочтение11 мин
Охват и читатели46K
Всем привет!
Решил описать основные моменты настройки отказоустойчивого (HA) кластера БД PostgreSQL в IaaS среде от Amazon — AWS.

Про настройку указанной связки с момента появления в свет 9й версии с нативной репликацией уже написано достаточно много статей, поэтому подробно останавливаться на настройке самого PostgreSQL и pgpool не буду, тут все относительно стандартно. Приводимые куски конфигов непригодны к бездумному копипасту, в любом случае придётся открывать свои конфиги и править необходимые параметры. Не хочу поощрять процесс конфигурации по методу копипаста.
Читать дальше →

PostgreSQL 9.3 + Pgpool-II

Время на прочтение4 мин
Охват и читатели39K
Решил поделиться с вами опытом настройки кластера PostgreSQL 9.3, состоящего из двух нод, управлением которого занимается pgpool-II, без использования Stream Replication (WAL). Надеюсь, кому-нибудь будет интересно.

Схема:

image

Как Вы понимаете, это будут два отдельно стоящих сервера, которыми будет управлять pgpool-II.

Конфигурация нод с PostgreSQL:
Оба сервера идентичны по своим аппаратным составляющим.
  • 4vCPU;
  • 16 Гб памяти;
  • CentOS 6.5;

Диски:
  • 50 Гб — система;
  • 100 Гб — pg_xlog
  • 500 Гб — каталог с данными


Пример,
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  7.4G   38G  17% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/sda1       194M   28M  157M  15% /boot
/dev/sdb1        99G  4.9G   89G   6% /var/lib/pgsql/9.3/data/pg_xlog
/dev/sdc1       493G  234G  234G  50% /var/lib/pgsql/9.3/my_data


Конфигурация нод с pgpool-II:
  • 4vCPU;
  • 8 Гб памяти;
  • CentOS 6.5;

Диски:
  • 50 Гб — система;


Про установку PostgreSQL в детали вдаваться не буду, так как она стандартная.

Настройка pgpool-II.
За основу настройки pgpool-II, взял инструкцию с официального сайта: www.pgpool.net/pgpool-web/contrib_docs/simple_sr_setting2_3.3/index.html

Хотел бы обратить внимание только самые важные моменты:
Читать дальше →

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

Время на прочтение10 мин
Охват и читатели44K
Задача кластеризации – частный случай задачи обучения без учителя, которая сводится к разбиению имеющегося множества объектов данных на подмножества таким образом, что элементы одного подмножества существенно отличались по некоторому набору свойств от элементов всех других подмножеств. Объект данных обычно рассматривается как точка в многомерном метрическом пространстве, каждому измерению которого соответствует некоторое свойство (атрибут) объекта, а метрика – есть функция от значений данных свойств. От типов измерений этого пространства, которые могут быть как числовыми, так и категориальными, зависит выбор алгоритма кластеризации данных и используемая метрика. Этот выбор продиктован различиями в природе разных типов атрибутов.

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

Обзор важнейших фич Postgres 9.3: материализованные представления

Время на прочтение7 мин
Охват и читатели50K
PostgreSQL 9.3 выйдет с довольно-таки крутой фичей, называющейся материализованные представления. Фича была разработан Кевином Гриттнером и не так давно закоммичена:

commit 3bf3ab8c563699138be02f9dc305b7b77a724307
Дата: Воскресенье 4 Марта 18:23:31 2013 -0600
Автор: Кевин Гриттнер

Добавлены материализованные представления

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

Реализована минимальная функциональность, но и она может быть полезной во многих случаях. В настоящее время данные загружаются только “по требованию” инструкциями CREATE MATERIALIZED VIEW и REFRESH MATERIALIZED VIEW. Ожидается, что в будущих релизах будут добавлены инкрементальные обновления данных с различными настройками времени обновления, и будет дано более четкое определение самому понятию “свежие” данные. В какой-то момент даже запросы смогут использовать материализованные данные вместо данных самих таблиц, но это требует реализации описанного выше функционала в первую очередь.

Большая часть работы по составлению документации проделал Robert Haas. Ревью: Noah Misch, Thom Brown, Robert Haas, Marko Tiikkaja. Ревью по вопросам безопасности, включающее решение о том, как лучше реализовать sepgsql, ожидается от KaiGai Kohei.
Читать дальше →

Чтение больших объемов данных в Python/Postgresql

Время на прочтение3 мин
Охват и читатели29K
Стек рассматриваемых технологий: Postgresql 9.3, Python 2.7 с установленным модулем «psycopg2».

Проблема


Как часто в вашей практике приходилось сталкиваться с задачей обработки таблиц большого объема (более 10 млн. записей)? Думаю вы согласитесь, что данная задача является довольно ресурсоемкой как в плане времени обработки, так и задействованных ресурсов системы. Сегодня я постараюсь показать альтернативный способ решения задачи.

Предложение:


В СУБД Postgresql есть прекрасный оператор для работы с большими объемами информации, а именно «COPY». Применение данного оператора позволяет нам читать и записывать огромные объемы информации в таблицу. В данной статье мы будем рассматривать режим чтения.

Согласно документации оператора «COPY» нам доступны несколько режимов чтения в файл либо в поток STDOUT, а также различные форматы, в том числе и «csv». Как раз его мы и постараемся использовать с максимальной пользой.
Читать дальше →

Вам не нужен Hadoop — у вас просто нет столько данных

Время на прочтение4 мин
Охват и читатели79K
Меня спросили: «Сколько у вас опыта с большими данными и Hadoop?» Я ответил, что часто использую Hadoop, но редко — с объёмами данных больше нескольких ТБ. Я новичок в больших данных — понимаю идеи, писал код, но не в серьёзных масштабах.

Следующий вопрос был: «Можете ли вы сделать простую группировку и сумму в Hadoop?» Разумеется, могу, и я попросил пример формата данных.

Они вручили мне флэш-диск со всеми 600 МБ данных (да, это были именно все данные, а не выборка). Не понимаю, почему, но им не понравилось моё решение, в котором был pandas.read_csv и не было Hadoop.
Читать дальше →

Майкл Стоунбрейкер — Hadoop на распутье

Время на прочтение11 мин
Охват и читатели18K
[@tsafin — Обладателя премии Тьюринга Майкла Стоунбрейкера представлять не надо, он и его студенты из Беркли и MIT создали, по ощущениям, большую часть реляционных и нереляционных баз данных за последние пару десятилетий. Ingres и Postgres, C-Store и Vertica, H-Store и VoltDB – вот лишь малая часть проектов и фирм, на который Майкл и его студенты повлияли напрямую, а ведь еще есть множество форков и деривативов…

Т.о. когда он критикует что-то, будь то NoSQL или Hadoop, то индустрии стоит, как минимум, прислушаться, а лучше попытаться измениться.

Мне показалось интересной его точка зрения на Hadoop, высказанная в статьях 2012 и 2014 года, и было интересно проследить развитие точки зрения «классика» за такой короткий промежуток времени.

Первую статью «Possible Hadoop Trajectories», опубликованную в «Comunications of ACM» http://cacm.acm.org/blogs/blog-cacm/149074-possible-hadoop-trajectories/fulltext, Стоунбрейкер написал в мае 2012 года в соавторстве с Джереми Кепнером (Jeremy Kepner), который в тот момент работал как старший технический персонал в MIT, и как исследователь в MIT Mathematics Department и MIT Computer Science and AI Lab. Эта статья, написанная в соавторстве, кажется более дерзкой и задорной, по сравнению со второй, написанной уже им самим двумя годами позже (да и, чего уж там, первая статья написана IMHO в лучшем стиле), но я публикую их в связке, т.к. контекст за прошедшие пару лет сильно изменился, и было бы нечестно по отношению к экосистеме Hadoop/HDFS оставлять это незамеченным.
Читать дальше →

Лучшие практики Go, шесть лет в деле

Время на прочтение18 мин
Охват и читатели63K
В 2014 году я выступил на открытии конференции GopherCon с докладом под названием «Go: Best Practices for Production Environments». В SoundCloud мы были одними из первых пользователей Go и к тому времени уже два года писали на нём и поддерживали Go в бою в той или иной форме. За это время мы кое-чему научились, и я попытался поделиться частью этого опыта.

С тех пор я продолжал программировать на Go в течение всего рабочего дня, сначала в командах SoundCloud, отвечающих за операционную деятельность и инфраструктуру, а теперь работаю в компании Weaveworks над Weave Scope и Weave Mesh. Также я усердно трудился над Go kit, набором инструментов для микросервисов с открытым исходным кодом. И всё это время я принимал активное участие в развитии сообщества Go-программистов, встречался со многими разработчиками на митапах и конференциях по всей Европе и в США, коллекционируя их истории успехов и провалов.

В ноябре 2015-го, на шестую годовщину релиза Go, я вспоминал то своё первое выступление. Какие из лучших практик прошли проверку временем? Какие из них устарели или стали неэффективными? Появились ли какие-то новые методики? В марте мне представилась возможность выступить на конференции QCon London, где я рассказал о лучших практиках 2014 года и дальнейшем развитии Go до 2016 года. В этом посте представлена выжимка из моего выступления.

Ключевые положения я выделил в тексте в виде Top Tips — лучших советов.

А вот и cодержание:

  1. Среда разработки
  2. Структура репозитория
  3. Форматирование и стиль
  4. Конфигурация
  5. Разработка программы
  6. Логирование и метрики
  7. Тестирование
  8. Управление зависимостями
  9. Сборка и развёртывание
  10. Заключение
Читать дальше →

Метаклассы в Python

Время на прочтение10 мин
Охват и читатели221K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

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

О бедном мокапе замолвите слово

Время на прочтение7 мин
Охват и читатели105K
На прошлой неделе появилась публикация Прототипируй это, определенная самим автором как «холиварная».
Раз уж разговор зашел о святом, почему бы не подкинуть пару веток в костер?

Я дизайнер интерфейсов. И я люблю мокапы.
Да и почему бы мне их не любить, если я только и делаю, что их делаю?

О прототипах или Называйте вещи своими именами

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

Python 3.5; async/await

Время на прочтение5 мин
Охват и читатели308K
Тихо и незаметно (с), вышел Python версии 3.5! И, безусловно, одно из самых интересных нововведений релиза является новый синтаксис определения сопрограмм с помощью ключевых слов async/await, далее в статье об этом.

Поверхностный просмотр «PEP 0492 — Coroutines with async and await syntax» поначалу оставил у меня вопрос «Зачем это надо». Сопрограммы удовлетворительно реализуются на расширенных генераторах и на первый взгляд может показаться, что все свелось к замене yield from на await, а декоратора, создающего сопрограмму на async. Сюда можно добавить и возникающее ощущение, что все это сделано исключительно для использования с модулем asyncio.

Но это, конечно же, не так, тема глубже и интереснее.
Читать дальше →

Python реализация парадигмы event-driven с помощью сопрограмм

Время на прочтение7 мин
Охват и читатели58K
Статья про то, как с помощью расширенных генераторов Python сделать собственную реализацию сопрограмм, переключающихся по получению событий. Простота кода получившегося модуля вас приятно удивит и прояснит новые и мало используемые возможности языка, которые можно получить, используя такие генераторы. Статья поможет разобраться и с тем, как это устроено в серьезных реализациях: asyncio, tornado, etc.
Читать дальше →

Коллекция Telegram ботов для гиков

Время на прочтение3 мин
Охват и читатели113K


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

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

Как сделать шлем виртуальной реальности своими руками

Время на прочтение6 мин
Охват и читатели67K
Здравствуйте все, кто увлекается гаджетами, стереоскопическим изображением и 3D графикой!

К сожалению, после открытия предзаказов на потребительскую версию Oculus CV1 стало ясно, что данный гаджет оказался не столь доступен, как хотелось бы многим. Действительно, 599$ — это стоимость в США. В России данные устройства будут стоить уже наверняка в районе 800-1000$ первый год-два. HTC Vive начинается от 799$. Пожалуй, сейчас это наиболее передовые устройства VR, но, нужно признать, что они не особо доступны.

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

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

Мы являемся евангелистами компьютерных VR систем в России, и в этой статье хотим показать, каким образом можно собрать-таки настоящий шлем виртуальной реальности у себя дома, даже лучше, чем Oculus Rift DK1, а затем силой инженерной мысли элегантно превратим его в DK2. В итоге, шлем будет совместим с последними версиями SDK и Runtime от Oculus Rift по относительно доступной цене. (Палмер Лаки наверное бы поперхнулся, прочитав эту статью, но мы ведь русские всегда чего-то придумываем и умеем красиво выходить из различных ситуаций).

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



О том, как собрать бюджетный шлем виртуальной реальности, совместимый с Oculus Rift DK2 у себя дома…
...читайте далее, много картинок!

Космические туннели и железо на голову или зачем нам космодром «Восточный»

Время на прочтение5 мин
Охват и читатели64K

На днях меня попросили проконсультировать инфографику РИА Новости, посвященную первому пуску с космодрома «Восточный». И там будет одно серьезное упрощение из-за ограничений формата материала. На самом деле, космодром «Восточный» нужен нам не из-за того, что большинство гражданских запусков происходит с космодрома «Байконур». Но, чтобы объяснить, зачем он нам нужен, придется рассказать, почему орбиту космического аппарата можно сравнить с туннелем, а также объяснить, что за «железо» падает с неба, и на кого оно падает.
Читать дальше →

16 ядер и 30 Гб под капотом Вашего Jupyter за $0.25 в час

Время на прочтение8 мин
Охват и читатели32K
Если Вам не очень повезло, и на работе нет n-ядерного монстра, которого можно загрузить своими скриптами, то эта статья для Вас. Также если Вы привыкли запускать скрипты на всю ночь (и утром читать, что где-то забыли скобочку, и 6 часов вычислений пропали) — у Вас есть шанс наконец познакомиться с Amazon Web Services.



В этой статье я расскажу, как начать работать с сервисом EC2. По сути это пошаговая инструкция по полуавтоматической аренде спотового инстанса AWS для работы с Jupyter-блокнотами и сборкой библиотек Anaconda. Будет полезно, например, тем, кто в соревнованиях Kaggle все еще пользуется своим игрушечным маком.

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

Пишем бота Slack для получения комментариев из VK на Python

Время на прочтение3 мин
Охват и читатели21K
Расширяя базовые возможности Slack, столкнулся с проблемой интеграции некоторых соц.сетей в чаты.

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

Kite: контекстные подсказки и автодополнение при написании кода

Время на прочтение1 мин
Охват и читатели26K


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

Kite интегрируется в редактор кода и консоль.
Читать дальше →

Информация

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