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

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

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

Прощай, объектно-ориентированное программирование

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


Я в течение десятилетий программировал на объектно-ориентированных языках. Первым из них стал С++, затем был Smalltalk, и наконец .NET и Java. Я фанатично использовал преимущества наследования, инкапсуляции и полиморфизма, этих трёх столпов парадигмы объектно-ориентированного программирования. Мне очень хотелось воспользоваться обещанным повторным использованием и прикоснуться к мудрости, накопленной моими предшественниками в этой новой и захватывающей сфере. Меня волновала сама мысль о том, что я могу мапить объекты реального мира в классы и думал, что весь мир можно аккуратно разложить по местам.

Я не мог ошибаться сильнее.
Читать дальше →
Всего голосов 225: ↑118 и ↓107+11
Комментарии329

Как стать профессиональным веб-разработчиком: практическое руководство

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

Дорога длинна и трудна, но интересна и полезна!

Статья задумывалась как практическое руководство для желающих стать профессиональным веб-разработчиком. Я уже более 20 лет пишу код для веба. Я ежедневно работаю с веб-разработчиками и помогаю им. В статье я опишу, что вам нужно выучить, когда вам нужно это выучить и где взять информацию (чаще всего даже бесплатно). Затем я дам совет по получению реального опыта, и что самое важное – по получению денег за написание кода.

По статье разбросано множество ссылок на бесплатные и важные ресурсы. Для простоты я собрал их в PDF и разбил по категориям. Мне не платят за упоминания сайтов, ссылки на которые я привёл – я всего лишь хочу порекомендовать вам лучшие ресурсы, чтобы помочь вам достичь вашей цели.

Что нужно помнить:

1. Статью разрешается пролистывать

Руководство может помочь вам вне зависимости от вашего положения на дороге к профессиональной разработке. Прокрутите его к тому заголовку, который лучше всего описывает ваше сегодняшнее положение, и читайте оттуда. Если вы только начали этот путь, или пока размышляете об этом – последуйте совету Короля из «Алисы в стране чудес»:

Начните с начала, и продолжайте, пока не дойдёте до конца; и там уже остановитесь.
Читать дальше →
Всего голосов 49: ↑38 и ↓11+27
Комментарии129

Давайте уже разберемся в DNS

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

image
Внимательный читатель найдет на этой картинке IPv6


Люди часто озадачены доменами. Почему мой сайт не работает? Почему эта хрень поломана, ничего не помогает, я просто хочу, чтобы это работало! Обычно, вопрошающий или не знает про DNS, или не понимает фундаментальных идей. Для многих DNS — страшная и непонятная штука. Эта статья — попытка развеять такой страх. DNS — это просто, если понять несколько базовых концепций.


Что такое DNS


DNS расшифровывается как Domain Name System. Это глобальное распределенное хранилище ключей и значений. Сервера по всему миру могут предоставить вам значение по ключу, а если им неизвестен ключ, то они попросят помощи у другого сервера.


Вот и все. Правда. Вы или ваш браузер запрашивает значение для ключа www.example.com, и получает в ответ 1.2.3.4.

Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии36

Приводим данные и код в порядок: оптимизация и память, часть 1

Время на прочтение10 мин
Количество просмотров27K
В этой серии из двух статей говорится о том, как структура данных и памяти влияет на производительность. Предлагаются определенные действия для повышения производительности программного обеспечения. Даже простейшие действия, показанные в этих статьях, позволят добиться существенного прироста производительности. Многие статьи, посвященные оптимизации производительности программ, рассматривают распараллеливание нагрузки в следующих областях: распределенная память (например, MPI), общая память или набор команд SIMD (векторизация), но на самом деле распараллеливание необходимо применять во всех трех областях. Эти элементы очень важны, но память также важна, а про нее часто забывают. Изменения архитектуры программ и применение параллельной обработки влияют на память и на производительность.

Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии27

Расширение к браузеру для извлечения текста из изображений

Время на прочтение1 мин
Количество просмотров90K
Naptha — очень полезное расширение для Chrome, которое автоматически распознаёт текст на всех картинках, загружаемых в браузер. С помощью этого расширения можно редактировать текст на картинках, выделять, копировать и переводить его. Это незаменимое расширение для копирования текста с отсканированных документов, фотографий, постеров, диаграмм, графиков, скриншотов и даже комиксов.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии7

Свой облачный хостинг за 5 минут. Часть 0: Виртуализация

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


Привет Хабр! Я опубликовал уже три части из цикла статей (раз, два, три), а тут часть 0, как снег на голову. Как же так? Всё дело в том, что виртуализация является опциональной при построении нашего хостинга. Эта статья — самодостаточна, она не связана с другими частями из цикла. Вы вообще можете их не читать, если просто хотите разделить ваш выделенный сервер на несколько виртуальных машин.

Всё что я буду рассказывать может выполнить обычный программист в течение 5 минут, просто запустив набор сценариев для Ansible, которые я подготовил специально для вас и выложил на GitHub.
Читать дальше →
Всего голосов 18: ↑12 и ↓6+6
Комментарии2

Поняв Docker

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

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


К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!


UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.


Что мы имеем сегодня


  • Зоопарк дубовых VPS-хостингов.
  • Дорогие IaaS и PaaS с гарантированным vendor lock in.
  • Уникальные сервера-снежинки.
  • Ворох устаревших зависимостей на неподдерживаемой операционке.
  • Скрытые связи частей приложения.
  • Незаменимый админ полубог на скейтборде.
  • Радуга окружений: development, testing, integration, staging, production.
  • Генерация конфигов для системы управления конфигами.
  • Feature flagging.
docker run docker
Всего голосов 92: ↑83 и ↓9+74
Комментарии245

Прототип сервиса обмена сообщениями Geotalk

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

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

Преамбула


У информации много характеристик, но есть одна на наш взгляд самая главная характеристика – актуальность. Если этот признак отсутствует, то информация либо ложная, либо ненужная. Пример неактуальной для меня информации это то, что происходит сейчас на перекрестке двух улиц в каком-то захолустном городке штата Миннесота. А вот информация о том, нет ли перебоев в работе станции метро Бибирево, для меня актуальна. Мы ежедневно смотрим новости своей страны, а не чужой, потому что эти новости для нас актуальны, не только во времени, но и географически. Я хочу сказать, что важным критерием актуальности, наравне со временем, является географическое расположение информации.
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии33

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 1

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

Этой весной, Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

Один из студентов лекции записывал и выложил транскипт. В данном хабратопике я делаю перевод первого занятия. Если пост покажется стоящим — продолжу переводить и выкладывать.

Конспект лекций — Питер Тиль (курс: CS183) Стартап — Стэнфорд, весна 2012 г.


Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →
Всего голосов 86: ↑76 и ↓10+66
Комментарии33

Рисование эллипса под произвольным углом в canvas на JavaScript

Время на прочтение4 мин
Количество просмотров25K
В процессе разработки одного приложения столкнулся с необходимостью рисования эллипсов под произвольным углом в canvas на JavaScript. Пользоваться какими-либо фреймворками в столь простом проекте не хотелось, так что я отправился на поиски статьи-мануала на эту тему. Поиски не увенчались успехом, так что пришлось разбираться с задачей самостоятельно, и я решил поделиться с вами полученным опытом.

Формализуем задачу. Нам требуется функция drawEllipse(coords, sizes, vector), где:

  • coords — координаты центра эллипса — массив [x, y]
  • sizes — длины большой и малой полуосей эллипса — массив [a, b]
  • vector — вектор [x, y] наклона эллипса

Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии23

Разработка javascript приложений на базе Rx.js и React.js (RxReact)

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

React.js позволяет очень эффективно и быстро работать с DOM-ом, активно развивается и с каждым днем набирает все больше популярности. Недавно открыл для себя концепцию реактивного программирования, в частности, не менее популярную библиотеку Rx.js. Данная библиотека выводит на новый уровень работу с событиями и асинхронным кодом, которого в UI логике javascript приложений предостаточно. Пришла идея объединить мощь данных библиотек в одно целое и посмотреть что из этого выйдет. В этой статье вы узнаете о том как удалось подружить Rx.js и React.js.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии9

DDoS, в поисках силы

Время на прочтение4 мин
Количество просмотров22K
Думаю, многие слышали о DNS amplification и NTP amplification атаках. Много было написано про эти два частных случая UDP-based Amplification атак. Какие ещё протоколы могут быть использованя для усиления? В этом контексте в статье предлагаю рассмотреть протокол tftp.

Давайте вернемся немного назад и вспомним, что представляет собой UDP-based Amplification атаки. Вся реализация сводится к двум пунктам:

  • 1) Отправка на уязвимый сервис специального UDP пакета с поддельным адресом отправителя (адресом жертвы
  • 2) Ответ сервиса на адрес жертвы пакетом в разы превышающим размер первоначального.

Таким образом, получается, что каждый отправленный нами бит к жертве приходит «усиленным» на коэффициент. Вот список протоколов и их коэффициентов усиления по версии us-cert.gov:



Это далеко не полный список, существуют и другие «интересные» протоколы, например, tftp. Ему и будет далее посвящена моя статья.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии9

Как разработчики сидели в Петербурге и тихо ели грибы, а потом написали ОС для систем хранения данных

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


В конце 2008 года на тогда ещё небольшую петербуржскую компанию вышел один западный медиахолдинг примерно так:
— Это вы там упоролись по хардкору и приспособили SSE-инструкции для реализации кода Рида-Соломона?
— Да, только мы не…
— Да мне пофиг. Хотите заказ?

Проблема была в том, что видеомонтаж требовал адовой производительности, и тогда использовались RAID-5 массивы. Чем больше дисков в RAID-5 — тем выше была вероятность отказа прямо во время монтажа (для 12 дисков — 6%, а для 36 дисков — уже 17-18%). Дроп диска при монтаже недопустим: даже если диск падает в хайэндовой СХД, скорость резко деградирует. Медиахолдигу надоело с криком биться головой о стену каждый раз, и поэтому кто-то посоветовал им сумрачного русского гения.

Много позже, когда наши соотечественники подросли, возникла вторая интересная задача — Silent Data Corruption. Это такой тип ошибок хранения, когда на блине одновременно меняется и бит в основных данных, и контрольный бит. Если речь о видео или фотографии — в целом, никто даже не заметит. А если речь про медицинские данные, то это становится диагностической проблемой. Так появился специальный продукт под этот рынок.

Ниже — история того, что они делали, немного математики и результат — ОС для highload-СХД. Серьёзно, первая русская ОС, доведённая до ума и выпущенная. Хоть и для СХД.
Читать дальше →
Всего голосов 209: ↑200 и ↓9+191
Комментарии53

ObjectManager в API Яндекс.Карт. Как быстро отрисовать 10 000 меток на карте и не затормозить всё вокруг

Время на прочтение10 мин
Количество просмотров110K
Перед разработчикам, которые используют API Яндекс.Карт, довольно часто встаёт задача отобразить много объектов на карте. Действительно много — порядка 10 000. Причем эта задача актуальна и для нас самих — попробуйте поискать аптеки на Яндексе. На первый взгляд кажется: «А в чем собственно проблема? Бери да показывай». Но пока не начнешь этим заниматься, не поймешь, что проблем на самом деле целый вагон.



Вопросы по большому количеству меток с завидной регулярностью поступают в наш клуб и техподдержку. Кто все эти люди? Кому может быть интересно показать на карте больше 10 меток? В этом посте я подробно рассмотрю весь вагон проблем и расскажу, как в API появились инструменты, помогающие разработчикам оптимально показать большое количество объектов на карте.
Читать дальше →
Всего голосов 93: ↑89 и ↓4+85
Комментарии85

Размышления о стандартной библиотеке JavaScript. Core.js

Время на прочтение64 мин
Количество просмотров104K
Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета

К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.

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

Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.

Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.

Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.

Содержание, или что получим на выходе:


Читать дальше →
Всего голосов 87: ↑82 и ↓5+77
Комментарии40

Удобная корзина (и DAS) под HDD/SSD 3.5"/2.5" из конструктора своими руками

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

1) Введение
2) Краткая предыстория
2) Материалы и комплектующие
2) Корзина вариант «А»
3) Корзина вариант «Б», делаем DAS
4) Итоги
5) Дальнейшие планы
5) Заключение (от автора)

Введение


Доброго времени, Хабр!

Данная статья посвящена двум интересным темам. А именно, применения металлического конструктора, для организации компьютерного стола (с более-менее рациональным использованием объёма/площади своего любимого рабочего места), и сборке своего собственного DAS. Для тех, кто не знает что это такое, Википедия подскажет научно (http://ru.wikipedia.org/wiki/DAS): DAS (англ. Direct-attached storage – система хранения данных с прямым подключением) – запоминающее устройство, непосредственно подключенное к серверу или рабочей станции без помощи сети хранения данных. Это ретроним, используемый в основном для отличия несетевых устройств хранения от SAN и NAS. DAS часто называют «островами информации». Надеюсь, что данные темы кого-то вдохновят на более красивое и практичное применение этой, скажем, «технологии» в повседневной жизни, потому как с точки зрения потенциала, возможности рассматриваемого конструктора на самом деле, как минимум достаточно большие. Темы максимально разжёваны, и по сути являются инструкциями к сборке. Реализация может быть проведена кем угодно, лишь бы были руки/желание/фантазия. Для наглядности прилагаю фотографии почти всего сборочного процесса.
Читать дальше →
Всего голосов 62: ↑48 и ↓14+34
Комментарии44

Подбор маски ввода по телефонному номеру

Время на прочтение7 мин
Количество просмотров171K
Данный плагин для jQuery позволяет автоматически подбирать подходящую маску ввода на основе введённого начала телефонного номера. Это позволяет сделать ввод номера телефона на странице web-cайта более быстрым и безошибочным. Кроме того, разработанный плагин может быть использован в других областях, если правила ввода возможно представить в виде нескольких масок ввода.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии56

10-мониторный рабочий стол своими руками

Время на прочтение6 мин
Количество просмотров541K
Долгое время придумывал для себя удобное, многомониторное рабочее место. По жизни приходится решать задачи, связанные с программированием, тестированием, виртуальными машинами и обработкой редко изменяемой динамической информации. Продолжительное время использовал связку из трех мониторов, которая очень понравилась сыну:



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



Читать дальше →
Всего голосов 314: ↑277 и ↓37+240
Комментарии287

SlickGrid documentation improvement

Время на прочтение2 мин
Количество просмотров8.6K
SlickGrid – небольшой javascript-компонент для отображения таблиц. Отличительной чертой этого компонента является концентрация на порядке отображения информации, а не на работе с ее (информации) источником. Другой отличительной чертой SlickGrid является весьма скудная документация, в том числе описание того, что касается работы через AJAX.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии0

Ученые из IBM обнаружили интересный физический феномен на примере «нанопроволочек» из полупроводников

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


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

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

Передача данных с использованием подобной системы обычно означает необходимость преобразования электрических сигналов в световые, и обратно. Для преобразования первого типа обычно используются материалы III-V групп полупроводников, которые излучают свет. Ну, а для обратного преобразования, света в электричество используются кремний и германий.

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

Читать дальше →
Всего голосов 57: ↑54 и ↓3+51
Комментарии33

Информация

В рейтинге
Не участвует
Откуда
Одесса, Одесская обл., Украина
Дата рождения
Зарегистрирован
Активность