Search
Write a publication
Pull to refresh
4
0

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

Send message

Личный опыт: Data Engineering на Upwork

Reading time8 min
Views43K
Я много лет работал Data Engineer'ом и Data Scientist'ом, решал сложные бизнес-кейсы, строил большие системы, выводил это все в продакшен. В начале 2017го я бросил пить, курить и работать в офисе и ушел фрилансить, экспериментировать с альтернативными формами занятости. Довольно много времени я провел на Upwork. Судя по многочисленным комментариям, уважаемая аудитория не до конца представляет себе, что это такое. Вещаю.

Upwork это крупнейшая в мире биржа фриланса. Дата сатанисты и дата инженеры мало кому в этом мире нужны (по сравнению с переводчиками, веб-мастерами и переписывателями текстов), так что задач для нас относительно мало, так что они тяготеют к крупнейшей бирже в мире. Других фриланс-бирж с постоянным потоком задач для дата саентистов в мире нет — ни Guru, ни Toptal, ни отечественный fl.ru спросом похвастаться не могут. Что важно — для специалистов более массовых специальностей опыт фриланса может сильно отличаться.
Читать дальше →

Всё, что нужно знать о сборщике мусора в Python

Reading time7 min
Views132K
Как правило, вам не нужно беспокоиться о сборщике мусора и работе с памятью когда вы пишете код на Python. Как только объекты больше не нужны, Python автоматически освобождает память из под них. Несмотря на это, понимание как работает GC поможет писать более качественный код.

Менеджер памяти


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

Как только один из маленьких объект удаляется — память из под него не переходит операционной системе, Python оставляет её для новых объектов с таким же размером. Если в одном из выделенных блоков памяти не осталось объектов, то Python может высвободить его операционной системе. Как правило, высвобождение блоков случается когда скрипт создает множество временных объектов.
Читать дальше →

[в закладки] Шпаргалка системного администратора по сетевым инструментам Linux

Reading time7 min
Views105K
В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.



В некоторых из рассматриваемых здесь примеров вы столкнётесь с сокращением <fqdn> (fully qualified domain name, полное доменное имя). Встретив его, замените его, в зависимости от обстоятельств, на адрес интересующего вас сайта или сервера, например, на нечто вроде server-name.company.com.
Читать дальше →

Разминка для тех, кто умеет в Python

Reading time3 min
Views21K

Привет! Мы обожаем квизы, посвященные языкам программирования. В нашем блоге мы разместили уже целых три: первый — по Python, PHP, Golang, DevOps, второй — полностью по Go, третий — только по PHP. Сегодняшний квиз посвящен исключительно Python.


Предлагаем вам размяться в честь конца ещё одной летней недели и в преддверии PyCon Russia 2018. (Кстати, кто едет? Мы там будем).


Под катом — семь вопросов, советы от друга, Чапаев, отрывки из ABBA (что? да!) и крутой мерч.


UPD: Мы закончили принимать ответы. Спасибо всем, кто поучаствовал! Ответы на вопросы — внутри текста, а победители и призеры под спойлером.


Победители и призеры викторины

Победитель


Vadem


Призеры


Второе место: acerikfy
Третье место: Histiophryne
Четвертое — десятое место: Swezy_ua, SlonPC, noth, IIRoadRunnerII, term1nal, alexchromets, Tihon_V .


Бонус


Так много участников дали правильные ответы, что мы решили разыграть случайным образом еще пять пар носков среди них. Крутые носки от Авито получают: sunman, grt_pretender, Vash, ipatov_dn, institoris


Запись розыгрыша



Добро пожаловать на борт: вводим новых разработчиков в команду

Reading time11 min
Views49K

Привет, Хабр! Меня зовут Андрей Гоменюк, я тимлид одной из команд серверной разработки Badoo.

На майском Badoo Techleads Meetup, посвящённом управлению разработкой, я поделился опытом интеграции новичков в команду. А сегодня делюсь текстовым дополненным и улучшенным вариантом своего доклада.

Представьте, что сегодня ваш первый рабочий день в Badoo. Каких же знаний и умений ждёт от вас отдел и в частности я, руководитель? Как минимум таких:
Читать дальше →

10 курсов по машинному обучению на лето

Reading time5 min
Views64K
За последние десятилетия с помощью машинного обучения создали самоуправляемые автомобили, системы распознавание речи и эффективный поиск. Сейчас это одна из самых быстроразвивающихся и перспективных сфер на стыке компьютерных наук и статистики, которая активно используется в искусственном интеллекте и data science. Методы машинного обучения используются в науке, технике, медицине, ритейле, рекламе, генерации мультимедиа и других областях.

Команда Университета ИТМО собрала десять курсов по машинному обучению, которые можно успеть пройти до конца лета. Одним они помогут войти в профессию, а другим — углубиться в нее.

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

Glusterfs + erasure coding: когда надо много, дешево и надежно

Reading time8 min
Views15K
Гластер в России мало у кого есть, и любой опыт интересен. У нас он большой и промышленный и, судя по дискуссии в прошлом посте, востребованный. Я рассказывал о самом начале опыта переноса бекапов с Enterprise хранилища на Glusterfs.

Это недостаточно хардкорно. Мы не остановились и решили собрать что-то более серьёзное. Поэтому здесь речь пойдёт о таких вещах, как erasure coding, шардинг, ребалансировка и её троттлинг, нагрузочное тестирование и так далее.



  • Больше теории волюмы/сабволюмы
  • hot spare
  • heal / heal full / rebalance
  • Выводы после ребута 3 нод (никогда так не делайте)
  • Как влияет на нагрузку сабволюма запись с разной скоростью от разных ВМ и shard on/off
  • rebalance после вылета диска
  • fast rebalance

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

О чем должен помнить веб-разработчик, чтобы сделать всё по SEO-феншую

Reading time7 min
Views16K
Сегодня очень сложно оставаться монопрофильным специалистом. И часто, делая новый сайт или внося различные правки, можно позаботиться заранее об основных вещах, которые помогут сразу сделать всё чисто и красиво не только с точки зрения программирования, но и с точки зрения SEO.


Так о чём же надо помнить, чтобы делать работу качественно, и SEO-специалисты были довольны вашей работой?
Читать дальше →

Пять типичных ошибок начинающих руководителей

Reading time3 min
Views15K

Всем доброго! Как всегда немножечко о нас: курс "Руководитель разработки", несмотря на его новизну для как не совсем чистого "программерского" курса, оказался очень успешным в плане количества окончивших его: из более чем тридцати человек отсеялось всего четыре человека, да и то по не связанным с тематикой обучения причинам. Так что закончив один поток, запускаем теперь и второй, чуть обновив и добавив теперь ещё и открытые уроки, на которых можно познакомиться и с преподавателем — Станиславом Михальским, и в целом с тем, что даётся на нём.


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


Поехали.


DevHead_Deep_LAST_11.07_2_Site.png


«Всегда честно признавай свои ошибки, это притупит бдительность начальства и позволит тебе натворить новые.» Марк Твен

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

Благодаря WebAssembly можно писать Frontend на Go

Reading time9 min
Views24K
Оригинал статьи.

В феврале 2017 года член команды go Brad Fitzpatrick предложил сделать поддержку WebAssembly в языке. Спустя четыре месяца в ноябре 2017 автор GopherJS Ричард Музиол начал реализовывать идею. И, наконец, полная реализация была смержена в mаster. Разработчики получат wasm примерно в августе 2018, с версией go 1.11. В результате, стандартная библиотека берёт на себя почти все технические сложности с импортом и экспортом функций, знакомых вам, если вы уже пробовали компилировать Си в wasm. Звучит многообещающе. Давайте посмотрим, что можно сделать с первой версией.
Читать дальше →

Настройка домашней среды для разработки (docker + gitlab + DNS)

Reading time5 min
Views36K

Intro


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


У большинства из нас есть какие-нибудь мелкие личные поделки, которые не выходят за рамки наших домов. Кто-то хостит их на рабочем компьютере, кто-то — на Heroku, кто-то — на VPS, а у кого-то есть домашний сервер. На реддите даже есть сообщество r/homelab, в котором люди обсуждают разные железки и софт для т.н. домашней лаборатории.


Я не настолько увлечен этим вопросом, но у меня дома стоит Intel NUC, который проигрывает музыку с NAS с помощью MPD. Помимо MPD на нем крутятся мои мелкие поделки, которые помогают мне с ним работать: ныне мертвый бот для телеграма, HTTP API на синатре и корявенький фронтенд для него.


В посте я без особых подробностей (многих из которых сам не понимаю) опишу процесс установки DNS-сервера для работы с доменными именами для сервисов, схему одновременной работы нескольких сервисов с помощью Docker и установку Gitlab с CI. Ничего нового вы не узнаете, но вдруг кому-нибудь пригодится этот "гайд". К тому же я бы хотел услышать предложения по поводу того, как можно было бы сделать это проще/элегантнее/правильнее.

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

Быстрое рабочее окружение для web-разработчиков (Vagrant и PHPStorm)

Reading time8 min
Views32K

Как быстро создать рабочее окружение для web-разработчиков или настраиваем окружение разработки для работы или изучения HTML, CSS, PHP в Windows.


(статья опубликована на Linkedin)


web - developer PHPStorm and Vagrant


Это мой перевод статьи от автора книг по Ассемблеру и Реверсингу программ. Сейчас он в основном публикуется в США. Думаю пригодиться начинающим и не только.


Начинающие программисты всегда задаются вопросом, с чего начать изучение создание web-сайтов? Поиск в интернете дает много разнообразной информации, но к сожалению только еще больше запутывает начинающих разработчиков. Имея более чем 5 летний опыт преподавания, я много раз видел, как ученики, делая перерывы в компьютерных играх и решившись стать web-разработчиками, пытались настроить окружения разработки. Они начинали перебирать программы для верстки. Они хватались за Sublime Text, Notepad++, Visual Studio Code, NetBeans или PHPStorm. Пытались ставить себе на локальный компьютер WAMP (расшифровывается как Windows, Apache, MySQL и PHP) платформы, такие как Denver, Xampp, Open Server и многие другие. Но так как в голове начинающего разработчика пока нет систематических знаний, нет опыта настройки, довольно редко у кого из них получалось настроить удобное окружение разработки, а у кого получалось, тот понимал, что играть стало сложнее, так как множество дополнительно установленных программ, мешают наслаждаться плавностью в игре.


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


Еще раз хочу сказать, что мы будем настраивать рабочее окружение в системе Windows для изучения создания сайтов на HTML, CSS и их связки с PHP. Будем называть такой компьютер рабочим, чтобы начинающие web-разработчики привыкали к мысли, что их компьютер — это их источник дохода.

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

ПО для машинного обучения на Python

Reading time7 min
Views38K


Сегодня существует большое количество программных инструментов для создания моделей Machine Learning. Первые такие инструменты формировались в среде ученых и статистиков, где популярны языки R и Python, исторически сложились экосистемы для обработки, анализа и визуализации данных именно на этих языках, хотя определенные библиотеки машинного обучения есть и для Java, Lua, С++. При этом интерпретируемые языки программирования существенно медленнее компилируемых, поэтому на интерпретируемом языке описывают подготовку данных и структуру моделей, а основные вычисления проводят на компилируемом языке.

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

Как работает мультиподпись в Биткоине

Reading time17 min
Views13K
В рамках этой статьи мы рассмотрим, как работает мультиподпись в протоколе Биткоин. Обратите внимание, что в других криптовалютах и цифровых валютах эти механизмы могут быть реализованы по-другому, — это зависит от модели транзакций. Мы дадим определение мультиподписи, схематично разберем ее структуру на примере транзакции, рассмотрим варианты ее применения и меры предосторожности при работе с ней. Постараемся доступно раскрыть тему предлагаемых улучшений, P2SH, а также на схеме разберем механизм отправки платежа на адрес с мультиподписью. Полагаем, что представленный материал будет интересным читателям, чья деятельность или сфера интересов касается цифровых валют.
Читать дальше →

epoll и Windows IO Completion Ports: практическая разница

Reading time8 min
Views11K

Введение


В этой статье мы попробуем разобраться чем на практике отличается механизм epoll от портов завершения (Windows I/O Completion Port или IOCP). Это может быть интересно системным архитекторам, проектирующим высокопроизводительные сетевые сервисы или программистам, портирующим сетевой код с Windows на Linux или наоборот.

Обе эти технологии весьма эффективны для обработки большого количества сетевых соединений.

Они отличаются от других методов по следующим пунктам:

  • Нет ограничений (кроме общих ресурсов системы) на общее количество наблюдаемых дескрипторов и типов событий
  • Масштабирование работает достаточно хорошо — если вы уже мониторите N дескрипторов, то переход к мониторингу N + 1 займёт очень мало времени и ресурсов
  • Достаточно легко задействовать пул потоков для параллельной обработки происходящих событий
  • Нет никакого смысла использовать при единичных сетевых соединениях. Все преимущества начинают проявляться при 1000+ соединений

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

(Upd: данная статья — перевод)

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

Конфиденциальность в криптовалютах

Reading time11 min
Views6.8K
В рамках данной статьи мы постарались дать ответ на вопрос о том, что такое конфиденциальность и как ее можно достичь в Биткоине и других цифровых валютах. Кроме того, здесь вы узнаете о конкретных механизмах достижения конфиденциальности, а также о том, как они применяются на практике. Тема будет интересной тем, кто непосредственно работает с криптовалютами, а также любителям протоколов, которые повышают уровень конфиденциальности пользователей.
Читать дальше →

25 ошибок начинающего программиста

Reading time19 min
Views131K

Научитесь выявлять их. Выработайте привычки избегать их.


Цель этой статьи не загнобить новичков за типичные ошибки, а научить выявлять их и избегать. Порядок перечисления – случайный.

От переводчика


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

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

Великобритания потратила £6 млн на data scientist’ов

Reading time3 min
Views7.4K
В мае 2018 года коллектив британских ученых провел тематическое исследование и выяснил, что траты на data scientist’ов (или экспертов по аналитическим данным) в Великобритании значительно увеличились. Мы решили разобраться в ситуации и дать краткий обзор.

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

Релиз неофициального MTProto прокси на Python, особенности протокола

Reading time6 min
Views26K
image

Недавно разработчики Telegram выложили исходные тексты прокси-сервера, работающего по протоколу MTProto. На хабре вышли статьи об особенностях его сборки и перепаковке докер-контейнера с ним. Официальный прокси сервер, написанный на С, удивляет объемом кода — примерно 23 тысячи строк. Одновременно с этим, а иногда и чуть раньше, вышло несколько альтернативных реализаций, но ни одна из них не поддерживала возможность рекламы своего канала.

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

Классификация больших объемов данных на Apache Spark с использованием произвольных моделей машинного обучения

Reading time25 min
Views7.9K

Часть 2: Решение


И снова здравствуйте! Сегодня я продолжу свой рассказ о том, как мы классифицируем большие объёмы данных на Apache Spark, используя произвольные модели машинного обучения. В первой части статьи мы рассмотрели саму постановку задачи, а также основные проблемы, которые возникают при организации взаимодействия между кластером, на котором хранятся и обрабатываются исходные данные, и внешним сервисом классификации. Во второй части мы рассмотрим один из вариантов решения данной задачи с использованием подхода Reactive Streams и его реализации с использованием библиотеки akka-streams.

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

Information

Rating
Does not participate
Registered
Activity