Pull to refresh
0
Send message

FTP исполнилось 50 лет

Reading time2 min
Views7.1K
image


16 апреля 1971 года-это не только день, когда The Rolling Stone впервые выпустила Brown Sugar, но и день публикации RFC 114, знаменующий день рождения FTP.

В те дни вьетнамская война была в центре внимания, TCP/IP еще не существовал, Джими Хендрикс умер 6 месяцев назад, telnet был новым крутым парнем, а некоторые из самых влиятельных рок-н-ролльных артистов собирались выпустить свои шедевры, в то время как FTP использовал сетевой протокол под названием NCP.

За прошедшие годы протокол FTP был усовершенствован 16 раз, добавивилась поддержка TCP/IP, безопасного расширения, также известного как FTPS, которое использует ту же технологию, что и HTTPS, и более поздние дополнение, такое как поддержка IPv6.
Total votes 25: ↑19 and ↓6+13
Comments48

[Разбор] На что обращать внимание при выборе банка для ведения проектов

Reading time3 min
Views4.9K

Моя прошлая статья о налоге на банковские вклады вызвала большой интерес, так что сегодня я продолжу финансовую тематику. Еще один вопрос, который не очень-то подробно освещен в интернете – как выбрать банк для работы над проектами (фриланс/бизнес)? 

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

Читать далее
Total votes 13: ↑7 and ↓6+1
Comments9

C++17. Функция стандартной библиотеки std::launder и задача девиртуализации

Reading time34 min
Views27K

В этой статье мы попробуем разобраться с одним из самых неоднозначных и непонятных нововведений стандарта C++17 — функцией стандартной библиотеки std::launder. Мы посмотрим на std::launder с другой стороны, посмотрим на источник. Разберем что лежит в основе функции на примере решения задачи девиртуализации и реализации виртуальных указателей в LLVM.


Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments72

PortablePy: компьютер-раскладушка для MicroPython

Reading time4 min
Views12K
Признаю: мне очень нравится та невероятная скорость, с которой загружаются домашние компьютеры 1980-х годов. Я какое-то время пытался оптимизировать время загрузки Raspberry Pi, но особенно далеко в этом деле не продвинулся. Я, кроме того, большой поклонник специализированных устройств, в которых аппаратное обеспечение используется для решения какой-то одной задачи. Такие системы тоже работают очень быстро. MicroPython — это очень интересная разработка, попадающая в сферу моих интересов. Это, с одной стороны — «язык высокого уровня», а с другой — программный комплекс, который без особых сложностей работает на весьма скромных аппаратных ресурсах.


Читать дальше →
Total votes 40: ↑40 and ↓0+40
Comments18

Самый маленький офисный пакет в мире

Reading time8 min
Views35K


Всем нам знаком традиционный офисный пакет — текстовый редактор, электронные таблицы, программа для создания презентаций, возможно, приложение для создания диаграмм или заметок. Всё это мы видим в Microsoft Office и в Google Docs. Все эти программы мощны и объёмны. Но каким будет минимальное количество кода, требуемое для создания офисного пакета?
Читать дальше →
Total votes 85: ↑83 and ↓2+81
Comments26

Четыре способа получить аудио вк или «это не баг, а фича»

Reading time127 min
Views65K

Всем привет! Сегодня я расскажу вам о моем опыте с ВК, найденных багах, об отношении к пользователям и, собственно, как получить аудиозаписи вк, пользуясь "не багами а фичами", как меня заверяли сотрудники данной корпорации. Итак, приступим!

Читать далее
Total votes 70: ↑67 and ↓3+64
Comments58

C++ template аллокатора с потокобезопасным циклическим буфером

Reading time9 min
Views8.6K
Вашему вниманию простой C++ template аллокатора с потокобезопасным циклическим буфером.

Вся реализация в одном заголовочном .h файле: [fast_mem_pool.h]

Фишки, чем этот аллокатор лучше сотни подобных — под катом.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments21

Как сделать поиск по файлоболотам в 104 строки кода на python

Reading time4 min
Views8.1K
Продолжая тематику коротких полезных скриптов, хотелось бы познакомить читателей с возможностью построения поиска по контенту файлов и изображений в 104 строки. Это конечно не будет умопомрачительным по качеству решением — но вполне годным для простых нужд. Также в статье не будет ничего изобретаться — все пакеты open source.

И да — пустые строки в коде тоже считаются. Небольшая демонстрация работы приведена в конце статьи.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments5

Go и кэши CPU

Reading time8 min
Views20K

Источник: unsplash.com

По словам Джеки Стюарта, трехкратного чемпиона мира по гонкам Формулы-1, понимание автомобиля помогло ему стать лучшим пилотом: «Гонщику не обязательно быть инженером, но нужен интерес к механике».

Мартин Томпсон (создатель LMAX Disruptor) применил эту концепцию к программированию. Если в двух словах, то понимание базового оборудования улучшит ваши навыки, когда речь заходит о разработке алгоритмов, структур данных и так далее.

Команда Mail.ru Cloud Solutions перевела статью, автор которой углубился в устройство процессора и рассмотрел, как понимание некоторых концепций CPU помогает принимать оптимальные решения.
Читать дальше →
Total votes 72: ↑69 and ↓3+66
Comments17

Древности: Nokia E90, последний коммуникатор

Reading time12 min
Views27K
Давным-давно, лет пятнадцать назад, производители смартфонов не стеснялись экспериментировать с формой: им казалось, что «следующая крутая штука» обязательно должна иметь какие-то особые изгибы корпуса, иное расположение кнопок. Из настоящего времени, из мира примерно одинаковых широкоэкранных лопат, это кажется странным: ну что они суетились, ведь очевидно было, что главное в смартфоне — большой дисплей. А все остальное достигается софтом. Ретрофанату такое разнообразие устройств конца девяностых и нулевых только в радость. Особый интерес представляют артефакты, выделявшиеся своим дизайном уже тогда. Из смартфонов первого десятилетия двадцать первого века, Nokia E90 — это такой аппарат, мимо которого невозможно пройти. Дело не в его популярности или даже полезности. Уж слишком он непохож на любые другие устройства, выпускавшиеся в те времена. Заложенные в него идеи реализуются скорее сейчас, в настоящем, и то робко и с непонятными перспективами.


Простите, Nokia E90 — это не смартфон. Это коммуникатор. Последний представитель особого класса носимых компьютеров, изобретенного финской компанией Nokia и просуществовавшего с 1996 по 2007 год. Уникальный гибрид носимого компьютера и обычного мобильника. Раскладушка, созданная для бизнеса, для высшего начальства, но желанная скорее среди технарей. В 2020 году этот телефон не так просто добыть за разумные деньги, но для любого фаната цифрового ретро это обязательный экспонат в коллекции. Я не смог пройти мимо, купил пару устройств и две недели пытался заставить работать хотя бы одно. Приставить к делу такой аппарат не получится: слишком стар. Я поставил перед собой иную задачу: хотелось эту Нокию оживить, настроить правильно ее штатные службы так, чтобы хоть что-нибудь работало. Посмотреть на эталон носимого устройства для бизнесмена 13-летней давности. И вот что у меня получилось.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments50

68 непрошеных советов

Reading time6 min
Views76K
Это перевод самого недавнего поста Кевина Келли, со-основателя журнала Wired, писателя, фотографа, футуролога.


Сегодня мой день рождения. Мне 68. Хочется пододвинуть кресло-качалку и пораздавать советы юнцам. Вот 68 непрошеных советов, которые я предлагаю всем вам как подарок ко дню рождения.

  • Научитесь учиться у тех, с кем вы не согласны, или даже тех, кто вас раздражает. Нет ли истины в их убеждениях?
  • Энтузиазм эквивалентен 25 баллам IQ.
  • Всегда требуйте дедлайн. Дедлайн избавляет от лишнего и заурядного. Он останавливает попытки достичь совершенного, поэтому вам приходится делать необычное. Необычное лучше.

Читать дальше →
Total votes 92: ↑85 and ↓7+78
Comments106

Стажировки в международных компаниях: как не завалить интервью и получить заветный оффер

Reading time7 min
Views13K
Эта статья является переделанной и дополненной версией моего рассказа про стажировку в Google.

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

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

Почему вы должны меня слушать? Не должны. Но за последние два года я побывал на стажировках в Google, Nvidia, Lyft Level5 и Amazon. Собеседуясь в компании в прошлом году, получил 7 офферов: от Amazon, Nvidia, Lyft, Stripe, Twitter, Facebook и Coinbase. Так что у меня есть кое-какой опыт в этом вопросе, который, возможно, окажется полезным.


Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments5

Математический пакет для Android — «Микро-Математика» — теперь с открытым исходным кодом

Reading time3 min
Views15K

Некоторое время назад я писал здесь о «Микро-Математике» — математическом пакете для Android, который я разработал в качестве хобби-поделки. Этим летом исполняется три года с тех пор, как «Микро-Математика» была выложена в Google Play на всеобщее обозрение. С тех пор программа развивалась дальше, и вот настал момент, когда доход от Google Play окупил разработку. В связи с этим я не вижу смысла дальше утаивать исходный код от общественности и перевожу проект в разряд Open Source. Тех, кому интересно познакомиться с репозиторием «Микро-Математики» на github, и, быть может, поучаствовать в дальнейшем развитии проекта, прошу под кат.

Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments20

Как я отказался от вычисления квадратного корня

Reading time14 min
Views47K


Очень часто при цифровой обработке сигналов необходимо вычислить длину вектора, обычно это делается по формуле A=SQRТ(X^2+Y^2). Здесь возвести в квадрат значение не сложно, но операция вычисления квадратного корня не является простой операцией, особенно для микроконтроллеров. Кроме того, алгоритмы вычисления корня выполняются не стабильное время, и для алгоритмов, в которых таких вычислений много, становится сложно прогнозировать время, необходимое для вычислений.

С такой задачей столкнулся и я. О том, как я отказался от процедуры вычисления корня, читайте ниже.
Читать дальше →
Total votes 126: ↑119 and ↓7+112
Comments93

Сети для самых маленьких. Часть ой, всё

Reading time4 min
Views153K
Дорогие мои друзья, отважные критики, тихие читатели и тайные почитатели, СДСМ заканчивается.



Я не могу похвастаться тем, что за 7 лет я затронул все темы сетевой сферы или тем, что хотя бы одну из них раскрыл полностью. Но это и не было целью. А целью этой серии статей было ввести юного студента за руку в этот мир и проводить его шаг за шагом по основной галерее, давая общее представление, и уберечь от болезненных скитаний по тёмным уголкам сознания Олифера и Олифера в мучительных попытках найти ответ на вопрос, как всё это применить в жизни.
СДСМ планировался коротким практическим курсом «как научиться в сети за месяц», а вылился в 16 (на самом деле 19) длинных выпусков, которые мы уже даже переименовали в «Сети Для Самых Суровых». Общее количество символов перевалило за 1 000 000.
Читать дальше →
Total votes 55: ↑55 and ↓0+55
Comments38

Bloody hell, или Как ругаться на английском, чтобы тебя приняли за культурного человека

Reading time6 min
Views109K
Ругательства — это неотъемлемая часть любого языка. И даже если вы не собираетесь их использовать в жизни, их нужно изучать и знать.

Но есть ситуации, когда без «крепкого словца» не обойтись. И чтобы не потерять свой имидж культурного человека, мы предлагаем вам целую коллекцию «mild curses» — легких ругательств и идиоматических выражений на английском языке, которые не считаются матами, но при этом помогут выразить всю палитру эмоций. Поехали!


Total votes 93: ↑87 and ↓6+81
Comments143

Понимание итераторов в Python

Reading time8 min
Views133K

Python — особенный язык в плане итераций и их реализации, в этой статье мы подробно разберём устройство итерируемых объектов и пресловутого цикла for.


Особенности, с которыми вы часто можете столкнуться в повседневной деятельности


1. Использование генератора дважды


>>> numbers = [1,2,3,4,5]

>>> squared_numbers = (number**2 for number in numbers)

>>> list(squared_numbers)
[1, 4, 9, 16, 25]

>>> list(squared_numbers)
[]

Как мы видим в этом примере, использование переменной squared_numbers дважды, дало ожидаемый результат в первом случае, и, для людей незнакомых с Python в достаточной мере, неожиданный результат во втором.


2. Проверка вхождения элемента в генератор


Возьмём всё те же переменные:


>>> numbers = [1,2,3,4,5]
>>> squared_numbers = (number**2 for number in numbers)

А теперь, дважды проверим, входит ли элемент в последовательность:


>>> 4 in squared_numbers
True
>>> 4 in squared_numbers
False
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments20

Полигоны Another World

Reading time4 min
Views11K

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


Хорошим выбором для этого мог бы стать DOOM. Мегахит 1994 года от id Software был портирован на всё, что только можно. Игра спроектирована вокруг ядра, чётко разделённого на слои. Обычно легко найти и прочитать реализацию шести подсистем ввода-вывода.


Другим выбором могла бы стать Another World 1991 года от Эрика Шайи, в Северной Америке более известная под именем Out Of This World. Я бы сказал, что на самом деле её интереснее изучать, чем DOOM, из-за полигональной графики, подходящей для диких оптимизаций. В некоторых случаях хитрые трюки позволяли игре работать на оборудовании, созданном за пять лет до выхода игры.



Total votes 53: ↑52 and ↓1+51
Comments10

Простой расчет контрольной суммы

Reading time12 min
Views215K
При передачи данных по линиям связи, используется контрольная сумма, рассчитанная по некоторому алгоритму. Алгоритм часто сложный, конечно, он обоснован математически, но очень уж неудобен при дефиците ресурсов, например при программировании микроконтроллеров.



Чтобы упростить алгоритм, без потери качества, нужно немного «битовой магии», что интересная тема сама по себе.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments26

Information

Rating
Does not participate
Registered
Activity