Pull to refresh
0
@brzmread⁠-⁠only

User

Send message

А если нет ментора?

Reading time3 min
Views76K
На просторах интернета встречается множество вопросов типа: «Как стать программистом?» и «Кто бы из опытных программистов захотел стать моим наставником, а я уж потом, когда научусь, отработаю?».

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

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

Тем, кто находится в системе (ученикам, студентам, «мажорам» или тем, кто уже работает в области IT) читать строго не рекомендуется.


Осторожно, много психо-логики!
Total votes 62: ↑37 and ↓25+12
Comments39

Как найти показатель степени двойки за O(1) с помощью последовательности де Брёйна

Reading time2 min
Views29K

Аперитив


Всем, наверное, известно, как посчитать количество бит в числе. Например, подойдут следующие два способа:
while (n)
{
    ++count;
    n &= (n-1);
}

while (n)
{
    if (n&1)
        ++count;
    n >>= 1;
}

Упражнение: какое в среднем количество операций будет выполнено в первой и во второй реализации?

Блюдо


Пусть у нас есть n-битное число вида 2^i. Нам необходимо найти i за O(1).
Как это сделать? Пусть n = 2^k. Построим последовательность де Брёйна (de Bruijn) над алфавитом {0,1} для подстрок длины k.

Что такое последовательность де Брёйна?

Читать дальше →
Total votes 60: ↑52 and ↓8+44
Comments49

Разработчик потратил 13 лет, чтобы закончить игру

Reading time2 min
Views136K
13 лет назад английский подросток Адам Батчер (Adam Butcher) пришёл домой с премьеры «Властелина колец» и твёрдо решил, что должен сделать игру, в которой реализует всё то, чего не хватает во всех остальных глупых играх. Там должны быть приключения и головоломки, настоящий сюжет и борьба со злом.

Парню было 14 лет, он как раз освоил популярную программу Multimedia Fusion — и в тот же день взялся за дело, нарисовал главного персонажа Тобиаса и объект № 1 — меч.


Читать дальше →
Total votes 220: ↑204 and ↓16+188
Comments103

Математик взломал сайт знакомств и нашёл девушку мечты

Reading time3 min
Views222K


35-летнему математику Крису Маккинли (Chris McKinlay) из Калифорнийского университета в Лос-Анджелесе потребовалось всего 88 дней, чтобы осуществить дата-майнинг анкет на сайте знакомств и подобрать девушку, которая идеально подходит по характеру. Помог ему в этом доступ к суперкомпьютерам Калифорнийского университета, пишет Wired.
Читать дальше →
Total votes 324: ↑288 and ↓36+252
Comments262

От linux-админа к python-программисту или как и почему я менял профессию

Reading time5 min
Views92K
За свои почти тридцать лет я дослужился до старшего системного администратора. В моем распоряжении было около сорока серверов с linux на борту. Компания росла и расширялась, но задачи сводились к наращиванию мощи уже готового функционала.

И все бы хорошо, но со временем и по определенным причинам дискомфорт начал преобладать над комфортом.
Читать дальше →
Total votes 104: ↑82 and ↓22+60
Comments233

Планирование аварийного восстановления. Часть первая

Reading time3 min
Views46K

Определяем места, где стоит подстелить соломку




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

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

В первой статье речь пойдет об определении зоны планирования, или поиске тех инфраструктурных элементов, отказ в работе которых негативно влияет на частоту пульса системного администратора. Итак, по порядку:
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments32

Как IPv6 помогает роутеры ломать

Reading time5 min
Views122K
image

Предисловие


Проснулся я сегодня с мыслью, что огромное количество инструкций по настройке NAT советуют использовать строку вида:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Многие понимают проблемы этой конструкции, и советуют добавлять:
iptables -A FORWARD -i ppp0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Но, зачастую, забывают задать таблице FORWARD действие DROP по умолчанию, или добавить правило REJECT в конец таблицы.
На первый взгляд, вроде бы, все кажется нормальным. Однако, это далеко не так. Дело в том, что если не запретить маршрутизировать трафик из WAN-порта в WAN-порт, кто-нибудь из вашей WAN-сети (предположим, что провайдер садит весь подъезд в одну /24) может маршрутизировать трафик через вас, просто прописав ваш IP в качестве шлюза. Все современные SOHO роутеры это учитывают, а вот неопытный администратор, который делает роутер под обычным linux, может не знать или забыть об этом. В подсети моего провайдера таких роутеров не оказалось, и мой план по захвату мира провалился. Однако, статья совсем не об этом.

Магические двоеточия


Как вы, может быть, знаете, многие современные программы и сервисы биндятся на IP :: (два двоеточия), а не на 0.0.0.0, как было раньше. IPv6 адрес :: значит то же самое, что и IPv4 0.0.0.0, т.е. «слушаем все интерфейсы». Многие считают, что если программа слушает ::, то этот сокет может принимать только IPv6-соединения, однако это далеко не так.
В IPv6 есть так называемое отображение IPv4-адресов в IPv6 диапазон. Если программа слушает сокет ::, а к ней обращаются из IPv4-адреса 1.2.3.4, то программа получит соединение с адреса ::ffff:1.2.3.4. Этого можно избежать, сделав:
sysctl -w net.ipv6.bindv6only=1

Но это нужно далеко не всегда, т.к. обычно удобно, что программа слушает один сокет, а получать соединения может по двум протоколам сразу. Практически во всех дистрибутивах, IPv6-сокеты ведут себя именно так, т.е. bindv6only=0.
Читать дальше →
Total votes 115: ↑113 and ↓2+111
Comments36

Information

Rating
Does not participate
Location
Россия
Registered
Activity