Pull to refresh
0
0

Программист

Send message

Сколько на самом деле звезд в нашей Вселенной?

Level of difficultyMedium
Reading time10 min
Views35K

Учитывая ~400 миллиардов звезд в Млечном Пути и ~6-20 триллионов существующих в нашей Вселенной галактик, кажется, что звезд в мире должно быть очень-очень много. Как минимум несколько септиллионов. Но на самом деле их может оказаться далеко не так много, как мы думаем. Всё это связано со скоростью формирования звезд во Вселенной и тем, как мы видим далекие галактики.

Читать далее
Total votes 35: ↑33 and ↓2+41
Comments30

VPN-сервер на роутере. Автоподключение VPN в Windows с блокировкой доступа к интернету кроме VPN-соединения

Reading time4 min
Views260K
Полный и подробный туториал как поднять VPN-сервер на роутере, реализовать автоподключение к нему в системе Windows и разрешить выход в интернет только через VPN.

Статья написана достаточно подробно, с расчетом даже на тех людей, кто впервые зашел в раздел Windows «Сетевые подключения».

Для чего это может пригодиться:

  • Вы фрилансер на сайтах вроде freelancer.com, upwork.com и т.д. И вы часто путешествуете. Есть большая вероятность, что вас забанят при заходе в аккаунт с другого IP. В этой статье описано одно из решений данной проблемы.
  • Иная необходимость удаленно использовать определенный IP.
  • Предоставление кому-либо в любой точке мира именно вашего IP.
Читать дальше →
Total votes 8: ↑6 and ↓2+8
Comments28

Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures»

Reading time3 min
Views66K
imageПривет, Хабр!

Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.

О чём?

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

Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.

Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».

Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.
Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments19

Основы контейнеризации (обзор Docker и Podman)

Reading time16 min
Views150K

Привет, Хабр!

К 2022 году о контейнеризации не слышал только ленивый. Большинство специалистов, так или иначе имеющих отношение к ИТ, хотя бы раз в жизни запускали программное обеспечение в контейнерах. Однако так ли эта технология проста и понятна? Давайте разбираться вместе!

Главная задача данной статьи – рассказать о контейнеризации, дать ключевые понятия для дальнейшего изучения и показать несколько простых практических приемов. По этой причине (а еще, безусловно, вследствие недостаточной квалификации автора) теоретический материал достаточно упрощен.

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments22

Земля круглая!

Reading time2 min
Views20K
image

Уважаемые хабравчане!
Осмелюсь ознакомить вас с результатами астрономических наблюдений и математических расчетов, которые я проводил в течение многих лет. Из них неопровержимо следует, что:
1. Земля является телом сферической формы, свободно плавающим в пространстве,
2. Земля вращается вокруг Солнца, которое является подобным Земле телом большего диаметра.
Как мне кажется, открытие носит эпохальный характер и способно заинтересовать всех, кто неравнодушен к современной науке.
Читать дальше →
Total votes 379: ↑278 and ↓101+177
Comments167

Убийство разработки: опыт Selectel

Reading time8 min
Views34K

Итак, я зашел в раздел с постами и там увидел диаграмму (пик рилейтед).

А под ней ссылка на статью «Разработчики - в стойло, менеджеры в - башню из слоновой кости: создаем касту избранных в 4 шага».

Фейл за фейлом
Total votes 135: ↑107 and ↓28+106
Comments52

Обзор расширения OPCache для PHP

Reading time33 min
Views126K


PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments25

Lua: маленький язык, который смог

Level of difficultyEasy
Reading time6 min
Views61K

Lua — это, пожалуй, мой любимый "маленький язык", с низкой когнитивной нагрузкой и простотой в изучении и использовании. Он встроен во многое ПО, такое как Redis, NGINX через OpenResty и Wireshark (прим. перевод.: и многое другое). Он также используется в качестве скриптового языка в таких играх, как World of Warcraft и Roblox через Luau (прим. перевод.: и многих других). Этот пост — краткое признание в любви языку с некоторыми примерами того, почему он мне так нравится.

Читать далее
Total votes 33: ↑30 and ↓3+30
Comments70

Как я открыл и развалил сеть ночных клубов? От 6 городов к 4 млн долгов

Level of difficultyEasy
Reading time4 min
Views40K

С 2017 по 2018 год я открыл сеть ночных клубов SODA night club & concert hall в городах: Великий Новгород, Псков, Мурманск, Орел, Белгород и Липецк.

4 года отдавал долги и теперь можно вспомнить как это было: плюсы и минусы собственного ночного клуба.

Читать далее
Total votes 157: ↑137 and ↓20+156
Comments158

Принципы SOLID в картинках

Reading time4 min
Views476K


Если вы знакомы с объектно-ориентированным программированием, то наверняка слышали и о принципах SOLID. Эти пять правил разработки ПО задают траекторию, по которой нужно следовать, когда пишешь программы, чтобы их проще было масштабировать и поддерживать. Они получили известность благодаря программисту Роберту Мартину.

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

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

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

Ну, приступим.
Читать дальше →
Total votes 57: ↑52 and ↓5+54
Comments26

Почему поиск по фото у Google и Apple не способен найти обезьян

Level of difficultyEasy
Reading time7 min
Views44K

В мае 2015 года Google выпустила отдельное приложение «Фотографии». Люди были поражены тем, что оно способно анализировать изображения, разбирать их на детали, а потом маркировать людей, места и вещи. Даже переводить текст!

Была только одна проблема. Google внедрил «категоризацию фотографий» — все фотографии автоматически размечались и организовывались в папках на основании того, что на них было. И через пару месяцев 22-летний программист-фрилансер Джеки Альсине обнаружил, что все фотографии, на которых был изображен он и его девушка, оба чернокожие, были помечены как «гориллы». Причем если на фотографиях был виден белый человек или человек со светлой кожей, Google маркировал их правильно — например, «выпускной» или «поход в бар». М-да.

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

Читать далее
Total votes 123: ↑117 and ↓6+145
Comments301

Пишем на Python как на Rust

Level of difficultyMedium
Reading time17 min
Views31K

Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.

Читать далее
Total votes 88: ↑83 and ↓5+94
Comments42

Что такое VCS (система контроля версий)

Reading time18 min
Views128K

Система контроля версий (от англ. Version Control System, VCS) — это место хранения кода. Как dropbox, только для разработчиков!

Она заточена именно на разработку продуктов. То есть на хранение кода, синхронизацию работы нескольких человек, создание релизов (бранчей)... Но давайте я лучше расскажу на примере, чем она лучше дропбокса. Всё как всегда, история с кучей картиночек для наглядности ))

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

Итого содержание:

Читать далее
Total votes 32: ↑17 and ↓15+9
Comments37

Как два программиста хлеб пекли

Reading time5 min
Views261K


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

Итак, представим себе, что есть два программиста. Один из них умный, прочёл кучу статей на Хабре, знает каталог GoF наизусть, а Фаулера — в лицо. Другой же делает всё просто. Первого будут звать, например, Борис Н., а второго — Маркус П. Само собой, имена вымышленные, и все совпадения с реальными людьми и программистами случайны.

Итак, к ним обоим приходит проектный менеджер (если в вашей вселенной PM не ходит сам к программистам, назовите его как-то иначе, например BA или lead, сути это не изменит) и говорит:
— Ребята, нам нужно, чтобы делался хлеб.

Именно так, «делался», без уточнения способа производства.

Как же поступят наши программисты?
Читать дальше →
Total votes 380: ↑348 and ↓32+316
Comments328

Как я написал удобную оболочку над электронным дневником

Level of difficultyEasy
Reading time4 min
Views18K

Статья о том, как я в 15 лет облегчил работу с электронным дневником, представленным Кировской области в 2022 году.

Что получилось сделать и как это было реализовано.

Читать далее
Total votes 66: ↑66 and ↓0+66
Comments17

Почему увольняют самых опытных? Потому что они слишком умные. Тейлоризм 21-го века

Level of difficultyEasy
Reading time8 min
Views146K


Опытный и талантливый сотрудник — носитель знаний и опыта. На него полагаются коллеги, он выполняет в десять раз больше работы, чем джун. Казалось бы, руководство должно молиться на такого разработчика. Но нет, к нему не испытывают особой благодарности и зачастую рады от него избавиться. Почему так происходит?
Читать дальше →
Total votes 180: ↑146 and ↓34+151
Comments318

Гарвардский курс CS50 на русском. Все серии

Reading time4 min
Views615K


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

Мы писали, что в курсе 24 серии, однако последние две оказались одной и той же лекцией (одна прочитана в Гарварде, а другая в Йеле), поэтому в списке переведённых лекций не 24, а 23.

Список лекций под катом.

Что вы узнаете, прослушав этот курс:
  • Основы компьютерных наук и программирования;
  • Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом;
  • Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
  • Основы языка программирования C и Scratch;
  • Основы баз данных и SQL;
  • Веб-разработка: основы CSS, HTML, JavaScript и PHP;
  • Основы подготовки презентации проектов по программированию.


Курс переведён и озвучен нашей студией по заказу JavaRush, и мы хотим сказать им огромное спасибо за поддержку!
Total votes 40: ↑37 and ↓3+34
Comments34

Конец мошенников в Кремниевой долине

Reading time8 min
Views49K

Чарли Джавис на выходе из зала суда

Фейки и махинации в округе Сан-Франциско закончились. Стартапы больше не могут свободно «играть» с правдой. Такое сейчас превалирующее ощущение в Кремниевой долине — вместе со злорадством и заметной долей паранойи.


Мало того, что финансирование прожигающих деньги стартапов за последний год сильно иссякло. Так в последние недели случилась ещё и череда очень громких посадок — от Элизабет Холмс до Риши Шаха, а скоро и Сэма Бэнкмана-Фрида. Теперь начинает казаться, что мошенничество стало убыточным бизнесом: инвесторы внимательнее изучают заявки стартапов, а возникший IT-спад показал, кто использовал фальшивые показатели, и теперь не может удержаться в строю. «Faking it till you make it», неофициальный девиз стартапов Кремниевой долины, перестаёт работать.

Читать дальше →
Total votes 82: ↑78 and ↓4+100
Comments211

Запуск аналогов ChatGPT на домашнем ПК в пару кликов и с интерфейсом

Level of difficultyEasy
Reading time6 min
Views217K

--- Обновление статьи 9 Августа 2023 ---

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

Основная проблема в том, что всё это требует глубоких технических знаний.

Но в этой статье я расскажу, как запустить добротную нейросеть на домашнем ПК с 16ГБ ОЗУ в несколько кликов. Буквально в несколько кликов - копаться в консоли не придётся.

Читать далее
Total votes 117: ↑116 and ↓1+142
Comments180

Алгебра анонимных сетей

Level of difficultyHard
Reading time15 min
Views7.6K

В настоящее время существует огромное количество всеразличного рода анонимных (скрытых) сетей, начиная с теоретически доказуемых (DC-сети, Queue-сети, Entropy-сети) и заканчивая практически используемыми (Tor, I2P, Mixminion). При таком количестве реализаций было бы очень удобно обобщить структуру всех таковых систем и привести их к общим составляющим. В результате подобных действий, мы сможем не только лучше понять то, как строятся современные анонимные сети, но и то, как их можно улучшать.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments1

Information

Rating
5,436-th
Registered
Activity