Pull to refresh
1100
146.8
Вячеслав Голованов @SLY_G

Научпоп. Проповедую в храме науки.

Send message

Бывший член команды Pirate Bay снова на свободе

Reading time2 min
Views6K
Бывшего члена команды Pirate Bay и компьютерного эксперта Петера Сунде выпустили из сумасшедшего дома тюрьмы. Он провёл там пять месяцев. До этого он скрывался от Интерпола два года, с тех пор, как суд признал его виновным по обвинениям в пиратстве.

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

После освобождения Петер должен немного прийти в себя, а потом он снова займётся делом своей жизни – улучшением Интернета.
Читать дальше →

Выразительный JavaScript: Регулярные выражения

Reading time22 min
Views236K

Содержание




Некоторые люди, столкнувшись с проблемой, думают: «О, а использую-ка я регулярные выражения». Теперь у них есть две проблемы.
Джейми Завински

Юан-Ма сказал: «Требуется большая сила, чтобы резать дерево поперёк структуры древесины. Требуется много кода, чтобы программировать поперёк структуры проблемы».
Мастер Юан-Ма, «Книга программирования»


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

В этой главе мы обсудим такой инструмент – регулярные выражения. Это способ описывать шаблоны в строковых данных. Они создают небольшой отдельный язык, который входит в JavaScript и во множество других языков и инструментов.

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

Выразительный JavaScript: Поиск и обработка ошибок

Reading time15 min
Views57K

Содержание




Отладка изначально вдвое сложнее написания кода. Поэтому, если вы пишете код настолько заумный, насколько можете, то по определению вы не способны отлаживать его.
Брайан Керниган и П.Ж.Плауэр, «Основы программного стиля»


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

Мастер Юан-Ма, «Книга программирования».


Программа – это кристаллизованная мысль. Иногда мысли путаются. Иногда при превращении мыслей в программу в код вкрадываются ошибки. В обоих случаях получается повреждённая программа.

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

Часто проблема возникает в тех ситуациях, возникновение которых программист изначально не предвидел. Иногда этих ситуаций нельзя избежать. Когда пользователя просят ввести его возраст, а он вводит «апельсин», это ставит программу в непростую ситуацию. Эти ситуации необходимо предвидеть и как-то обрабатывать.
Читать дальше →

Ricochet — анонимный бессерверный протокол передачи мгновенных сообщений

Reading time6 min
Views46K
Перевод вводной части и введения в техническое описание проекта с открытым исходным кодом Ricochet (github).

Анонимная бессерверная система передачи мгновенных сообщений, которая просто работает


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

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

Примечание: проект недавно был переименован из Torsion.
Читать дальше →

Электронная книга для фанатов чтения

Reading time3 min
Views30K


Сколько себя помню, я всегда любил читать.

В детстве лучшим времяпрепровождением было устроиться поудобнее с интересной книгой, и погрузиться в другой мир – живой, полный приключений, героизма, отваги. Фантастика, приключения – любимые жанры. До сих пор дома есть большая библиотека научной фантастики. В связи с финансовыми трудностями сейчас её приходится распродавать, но тем не менее. Кстати, радуют эти люди, которые по объявлению приезжают куда-то на другой конец Москвы за нужной книжкой, которую не найти в магазинах. Ни комиксы, ни тем более фильмы с сериалами или компьютерные игры не развивают так воображение, не способствуют усвоению языка и грамотности, как книги. «Книга — источник знаний, книга — лучший подарок» — для меня эти изречения не являются ироническими штампами.
Читать дальше →

Facebook, скрытые сервисы и https-сертификаты

Reading time5 min
Views28K
Facebook недавно открыл миру наличие скрытого tor-сервиса, дающего более безопасный доступ к их сайту. Пользователи и журналисты спрашивали комментариев у разработчиков Tor по этому вопросу. Перед вами их ответы и размышления.

Часть первая: да, в посещении сайта Facebook через Tor нет никаких противоречий

Мне казалось, что в этом пояснении нет нужды, пока я не услышал от журналиста вопрос – почему пользователи Tor не будут использовать Facebook. Оставляя в стороне отношение Facebook к приватности и их правила связанные с использованием настоящих имён, и надо ли вам что-то сообщать в Facebook о своей персоне,- главное здесь то, что анонимность не заканчивается только попыткой скрыться от сайта, на который вы ходите.
Читать дальше →

Выразительный JavaScript: проект: Электронная жизнь

Reading time18 min
Views47K

Содержание




Вопрос о том, могут ли машины думать так же уместен, как вопрос о том, могут ли подводные лодки плавать.

Эдсгер Дейкстра, Угрозы вычислительной науке


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

Наш проект – постройка виртуальной экосистемы, небольшого мира, населённого существами, которые двигаются и борются за выживание.
Читать дальше →

Выразительный JavaScript: Тайная жизнь объектов

Reading time19 min
Views82K

Содержание




Проблема объектно-ориентированных языков в том, что они тащат с собой всё своё неявное окружение. Вам нужен был банан – а вы получаете гориллу с бананом, и целые джунгли впридачу.

Джо Армстронг, в интервью Coders at Work


Термин «объект» в программировании сильно перегружен значениями. В моей профессии объекты – стиль жизни, тема священных войн и любимое заклинание, не теряющий своей магической силы.

Стороннему человеку всё это непонятно. Начнём же с краткой истории объектов как концепции в программировании.
Читать дальше →

Выразительный JavaScript: Функции высшего порядка

Reading time17 min
Views104K

Содержание




Цу-ли и Цу-су похвалялись размерами своих новых программ. «Двести тысяч строк»,- сказал Цу-ли,- «не считая комментариев!» Цу-су ответил: «Пф-ф, моя – почти миллион строк». Мастер Юнь-Ма сказал: «Моя лучшая программа занимает пятьсот строк». Услышав это, Цу-ли и Цу-су испытали просветление.

Мастер Юнь-Ма, Книга программирования

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

Энтони Хоар, 1980 лекция на вручении премии Тьюринга


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

Выразительный JavaScript: Структуры данных: объекты и массивы

Reading time22 min
Views150K

Содержание




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

Чарльз Бэббидж, «Отрывки из жизни философа» (1864)


Числа, булевские значения и строки – кирпичики, из которых строятся структуры данных. Но нельзя сделать дом из одного кирпича. Объекты позволяют нам группировать значения (в том числе и другие объекты) вместе – и строить более сложные структуры.

Написание программ, которым мы до сего момента занимались, сильно затруднял тот факт, что они работали только с простыми данными. Эта глава добавит вам в инструментарий понимание структур данных. К её концу вы будете знать достаточно для того, чтобы начать писать полезные программы.

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

Выразительный JavaScript: Функции

Reading time17 min
Views232K

Содержание




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

Дональд Кнут


Вы уже видели вызовы функций, таких как alert. Функции – это хлеб с маслом программирования на JavaScript. Идея оборачивания куска программы и вызова её как переменной очень востребована. Это инструмент для структурирования больших программ, уменьшения повторений, назначения имён подпрограммам, и изолирование подпрограмм друг от друга.

Самое очевидное использование функций – создание нового словаря. Придумывать слова для обычной человеческой прозы – дурной тон. В языке программирования это необходимо.

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

Выразительный JavaScript: Структура программ

Reading time15 min
Views141K

Содержание




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

_why, Why's (Poignant) Guide to Ruby


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

Выразительный JavaScript: Величины, типы и операторы

Reading time10 min
Views157K

Выразительный JavaScript: Введение

Reading time9 min
Views471K

Всё, что вы хотели знать об областях видимости в JavaScript (но боялись спросить)

Reading time8 min
Views83K
У JS есть несколько концепций, связанных с областью видимости (scope), которые не всегда ясны начинающим разработчикам (и иногда даже опытным). Эта статья посвящена тем, кто стремится погрузиться в пучину областей видимости JS, услышав такие слова, как область видимости, замыкание, “this”, область имён, область видимости функции, глобальные переменные, лексическая область видимости, приватные и публичные области… Надеюсь, по прочтению материала вы сможете ответить на следующие вопросы:

— что такое область видимости?
— что есть глобальная/локальная ОВ?
— что есть пространство имён и чем оно отличается от ОВ?
— что обозначает ключевое слово this, и как оно относится с ОВ?
— что такое функциональная и лексическая ОВ?
— что такое замыкание?
— как мне всё это понять и сотворить?
Читать дальше →

Повышаем личную эффективность: советы от Марка Андреессена

Reading time8 min
Views121K
Одно из моих любимых удовольствий – productivity porn, порнография эффективности. Или, для тех, кто в теме – pr0n. Это набор техник, тактик и трюков по максимизации личной эффективности. Что называется, «getting things done».

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

Не составляйте себе расписание

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

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

Reading time8 min
Views62K
Есть много тонкостей в найме людей, и многие люди поумнее меня часто писали об этом. Поэтому я не буду пытаться охватить всё. Но я передам некоторые уроки, полученные мною, уроки того, как нанять наилучших людей для стартапа. В этой статье я затрону два вопроса. Критерий: что ценить в кандидатах. Процесс: как вести процесс найма, и как исправлять возможные ошибки.

Критерии


Многие скажут – нанимайте умных. Особенно это актуально для нашей индустрии. Вы прочтёте: «нанимайте самых умных, и успех у вас в кармане». Я считаю, что сам по себе интеллект слишком переоценен. Я не видел статистики, которая бы подтверждала зависимость между чистым интеллектом, измеренным любым способом (достижения в образовании, тесты интеллекта, способность решать логические задачки) и успехом компании.
Читать дальше →

Вся правда о венчурных инвесторах, часть 2

Reading time4 min
Views9.5K
Часть 1

Выбираем инвестиционные компании и инвесторов внутри компаний


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

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

Руководство по созданию стартапов, часть 9, и Вся правда о венчурных инвесторах

Reading time5 min
Views16K
Часть 8

Руководство по созданию стартапов, часть 9: Как нанять профессионального генерального директора компании (CEO)?


Никак. Если никто из основателей стартапа не может быть CEO — немедленно продавайте компанию.

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

Вся правда о венчурных инвесторах, часть 1


Многие имеют своё мнение по поводу венчурных инвестиций. Плюсы и минусы венчурных инвесторов (ВИ), искать ли себе ВИ, у кого из них можно брать деньги, как добиться от ВИ инвестиций, являются ли ВИ опытными рисковыми профессионалами или психически неуравновешенными социопатами, ненавидящими предпринимателей…

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity