Как стать автором
Обновить
5
0
habralan @habralan

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

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

А в чем проблема работать с файлами?

Уровень сложностиСредний
Время на прочтение53 мин
Количество просмотров27K

Данные - это важный компонент системы. Приложение может хранить их где угодно, но в результате все сводится к файлам. Файлы - это хорошая абстракция, но она протекает: если не знать того, как работают ОС или гарантии файловой системы, то легко выстрелить себе в ногу.

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

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Всего голосов 170: ↑169 и ↓1+168
Комментарии23

Собираем автономную игру на C# в 2 килобайтах

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров20K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Всего голосов 128: ↑127 и ↓1+126
Комментарии34

Windows — причина медленного интернета

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров102K

Если вы столкнулись с «особой» проблемой медленного интернета и никакие танцы с бубном вам не помогают, то это статья для вас.

Провайдер, роутер, интернет-кабели, rg-45, обжимка, cat5e, порты, драйвера, программы уменьшающие скорость, утилиты, вирусы, настройки сетевого адаптера — это не какие-то страшные слова, на самом деле это всё не причина замедления интернета. В случае, если вы прошли всю эту цепочку и ничего не изменилось, тогда читайте дальше.

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

Читать далее
Всего голосов 167: ↑161 и ↓6+155
Комментарии316

Как россиянину открыть счет в иностранном банке в 2024 году?

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

В 2023 году по прежнему сохраняется спрос на открытие банковских карт за рубежом. После массовой волны в 2022 году требования от зарубежных банков стали ужесточаться, возможности перевода средств из/в РФ снижаться.

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

Читать далее
Всего голосов 31: ↑25 и ↓6+19
Комментарии66

ArtMoney — живее всех живых

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

История приложения ArtMoney началась давно, в 1996 году. Его создал Михайлов Артём Сергеевич, выпускник факультета информатики Самарского аэрокосмического университета. Разработана программа для того, чтобы помогать геймерам. Например, получать бесконечные жизни и ману, боеприпасы и ресурсы. Не совсем спортивно, конечно, но если есть возможность получить внутриигровые бонусы, то, как говорится, «почему бы и да»?

Первые версии работали с играми под DOS и Windows. Но позже появилась поддержка всевозможных эмуляторов игровых консолей — от ZX Spectrum до Nintendo Switch. Так что если вам надо получить бессмертие в каком-нибудь редком консольном тайтле, то ArtMoney, скорее всего, с этим справится. Если вы думаете, что ArtMoney унесло ветрами времени, то нет — софт реально «живой», продолжает обновляться и радовать геймеров.

Читать далее
Всего голосов 105: ↑102 и ↓3+99
Комментарии140

Мой путь изучения иностранных языков: прошлое, настоящее и будущее

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров9.4K

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

Я помню, как в школьные годы думал, что изучение языков - это лишь скучный и неприятный предмет. Однако, когда я начал изучать и использовать иностранные языки по своему желанию, это стало для меня нечто большим. Сейчас изучение языков стало моим хобби, которым я действительно наслаждаюсь. Каждый язык открывает окно в новый мир, раскрывает различные культуры, способы мышления и выражения. Изучение языков приносит удивительные ощущения и наполняет меня чувством изумления.

Про мои уровни владения языками: я свободно владею английским, в 2013 году достиг уровня В2 в немецком языке (но сейчас мой уровень снизился), в 2014 году достиг уровня примерно N3 в японском языке (но уровень тоже упал), и недавно достиг уровня В2 в испанском языке.

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

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии18

17 убойных репозиториев GitHub, которые нужно сохранить

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

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

Читать далее
Всего голосов 174: ↑144 и ↓30+114
Комментарии44

Лучшие страны с визами для цифрового кочевника

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

Коста-Рика — одна из стран со специальной визой для удалёнщиков

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


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


Если вы хотели куда-то поехать и спокойно жить, не бросая своей текущей работы, вот какие сейчас есть варианты:

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии34

Коронавирусы: от SARS к 2019-nCoV

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

Disclaimer: Я высказываю свое субъективное мнение на базе доступных данных. Мнение профессиональных вирусологов и эпидемиологов может отличаться от моего. В любой непонятной ситуации обращайтесь к материалам ВОЗ.

Привет, коллеги. Чем больше роюсь в данных по вспышке коронавируса 2019-nCoV, тем меньше мне нравится происходящее, с учетом предыдущих вспышек аналогичных вирусов. Предлагаю пробежаться по истории прошлых эпидемий и попробовать спрогнозировать дальнейшее течение.
Всего голосов 281: ↑273 и ↓8+265
Комментарии1974

Мастер-класс «Почему Стив Джобс любил шрифты» (Алексей Каптерев)

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


Привет, Хабр! Давно у нас в блоге не было расшифровок мастер-классов. Исправляемся. В этом посте вас ждет грандиозное путешествие в мир шрифтов от древнейших времен до наших дней. Если вы хотите понять, каким образом шрифты влияют на наши эмоции и наконец научиться отличать гуманистический гротеск от ленточной антиквы — добро пожаловать под кат. И да, там очень много картинок. Передаем слово автору.




Шутка, написанная гарнитурой Times, на 10 % смешнее той, что написана гарнитурой Arial. Почему? Чёрт знает. Лучшее объяснение, которое я видел: юмор ассоциируется с агрессией, с остротой, с остроумием — а Times выглядит более острым, чем Arial.


Ещё один любопытный эксперимент, в котором участвовало 45 тыс. человек. Заходишь на сайт, тебе показывают статью Дэвида Дойча, британского физика. В статье автор пишет, что сегодня очень трудно внезапно умереть. Например, от инфекционного заболевания или в уличной драке. Лет сто назад это случалось намного чаще. Главный вывод статьи — сейчас мир безопасен как никогда. В среднем, конечно, ведь где-то постоянно идут локальные военные конфликты.

Всего голосов 196: ↑194 и ↓2+192
Комментарии100

Топливо для ИИ: подборка открытых датасетов для машинного обучения

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


Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье


Если вы прямо сейчас не делаете свой ИИ, то другие будут делать его вместо вас для себя. Ничто более не мешает вам создать систему на основе машинного обучения. Есть открытая библиотека глубинного обучения TensorFlow, большое количество алгоритмов для обучения в библиотеке Torch, фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных Spark и множество других инструментов, облегчающих работу.


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


Мы разобрались в этом вопросе и собрали данные по датасетам, удовлетворяющим критериям открытости, востребованности, скорости работы и близости к реальным задачам.

Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии10

Деловая переписка на английском языке: фразы и советы

Время на прочтение18 мин
Количество просмотров600K
Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

Задача становится сложнее, если вы общаетесь на неродном английском языке с представителями других культур. В статье я поделюсь, на что в этом случае обратить внимание, как избежать ошибок и достичь взаимопонимания с иностранными коллегами и партнерами.
Читать дальше →
Всего голосов 104: ↑100 и ↓4+96
Комментарии80

WCF + Cross Domain Ajax Calls (CORS) + Авторизация

Время на прочтение8 мин
Количество просмотров30K
Добрый день!
Хотелось бы продемонстрировать один из возможных подходов к решению проблемы работы с WCF сервисами с различных доменов. Найденная мной информация по данной теме была или неполной, или содержала избыточное количество информации, затрудняющей понимание. Хочу рассказать о нескольких способах взаимодействия WCF и AJAX POST запросов, включающих в себя информацию о Cookies и авторизации.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии3

Objective-C вопросы на уровень middle/senior

Время на прочтение4 мин
Количество просмотров60K
Что должен знать objc разработчик на уровень middle/senior?
К сожалению, четкой черты на вертикальное развитие нет. Парадокс, но чтобы знать что изучить, нужно знать что ты не знаешь.
Я постарался вспомнить самые интересные вопросы, которые мне задавали самому на различных собеседованиях, а так же расширил их множеством вопросов(тем же уровнем) от себя.
Здесь нет общих вопросов вроде: IoC, design patterns, S.O.L.I.D. и т.п.

ВНИМАНИЕ!!!
Помимо вертикального развития немаловажно и горизонтальное

ВНИМАНИЕ!!! (2)
Не пишите в комментарии ответы на вопросы, это дает возможность людям самостоятельно разобраться.
Однако, если у вас имеются интересные вопросы по теме, я с радостью добавлю их в список.

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


Начинаем


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

Покупка оптимальной квартиры с R

Время на прочтение12 мин
Количество просмотров61K
Многие люди сталкиваются с вопросом покупки или продажи недвижимости, и важный критерий здесь, как бы не купить дороже или не продать дешевле относительно других, сопоставимых вариантов. Простейший способ — сравнительный, ориентироваться на среднюю цену метра в конкретном месте и экспертно добавляя или снижая проценты от стоимости за достоинства и недостатки конкретной квартиры. image Но данный подход трудоемок, неточен и не позволит учесть все многообразие отличий квартир друг от друга. Поэтому я решил автоматизировать процесс выбора недвижимости, используя анализ данных путем предсказания «справедливой» цены. В данной публикации описаны основные этапы такого анализа, выбрана лучшая предиктивная модель из восемнадцати протестированных моделей на основании трех критериев качества, в итоге лучшие (недооцененные) квартиры сразу помечаются на карте, и все это используя одно web-приложение, созданное с помощью R.

Читать дальше →
Всего голосов 62: ↑59 и ↓3+56
Комментарии35

Храним 300 миллионов объектов в CLR процессе

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

Камень преткновения — GC


Все managed языки такие как Java или C# имеют один существенный недостаток — безусловное автоматическое управление паматью. Казалось бы, именно это и является преимуществом managed языков. Помните, как мы барахтались с dandling-указателями, не понимая, куда утекают драгоценные 10KB в час, заставляя рестартать наш любимый сервер раз в сутки? Конечно, Java и C# (и иже с ними) на первый взгляд разруливают ситуацию в 99% случаев.

Так-то оно так, только вот есть одна проблемка: как быть с большим кол-вом объектов, ведь в том же .Net никакой магии нет. CLR должен сканировать огромный set объектов и их взаимных ссылок. Это проблема частично решается путём введения поколений. Исходя из того, что большинство объектов живёт недолго, мы высвобождаем их быстрее и поэтому не надо каждый раз ходить по всем объектам хипа.

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

Однако на практике это сделать не удаётся. Как только мы добавляем первые 10 миллионов объектов и они “устаревают” из первого поколения во второе, то очередной полный GC-scan “завешивает” процесс на 8-12 секунд, причём эта пауза неизбежна, т.е. мы уже находимся в режиме background server GC и это только время “stop-the-world”. Это приводит к тому, что серверная апликуха просто “умирает” на 10 секунд. Более того, предсказать момент “клинической смерти” практически невозможно.
Что же делать? Не хранить много объектов долго?

Зачем


Но мне НУЖНО хранить очень много объектов долго в конкретной задаче. Вот например, я храню network из 200 миллионов улиц и их взаимосвязей. После загрузки из flat файла моё приложение должно просчитать коэффициенты вероятностей. Это занимает время. Поэтому я это делаю сразу по мере загрузки данных с диска в память. После этого мне нужно иметь object-graph, который уже прекалькулирован и готов “к труду и обороне”. Короче, мне нужно хранить резидентно около 48GB данных в течении нескольких недель при этом отвечаю на сотни запросов в секунду.

Вот другая задача. Кэширование социальных данных, которых скапливаются сотни миллионов за 2-3 недели, а обслуживать необходимо десятки тысяч read-запросов в секунду.
Читать дальше →
Всего голосов 50: ↑44 и ↓6+38
Комментарии81

Платье, которое разделило интернет

Время на прочтение2 мин
Количество просмотров497K
Вот уже второй день множество людей на самых разных сайтах обсуждает очень простой вопрос. Какого цвета это платье?

image


Казалось бы, какие тут могут возникнуть сложности? Но единства в этом вопрос нет: три четверти опрошенных считают платье бело-золотым, а одна четверть — сине-черным. Согласитесь, это странно. В чем же дело?
Читать дальше →
Всего голосов 162: ↑148 и ↓14+134
Комментарии723

Пишем и запускаем приложения ASP.NET vNext на Маке

Время на прочтение3 мин
Количество просмотров15K
ASP.NET восстала из пепла и делает уверенные шаги к завоеванию мира! Во первых Microsoft открыла часть исходников .NET и продолжает их открывать. Новая версия ASP.NET vNext с самого начала open source и размещена на GitHub. Во вторых отныне .NET будет кроссплатформенным, ровно как и разрабатываемый веб-сервер. А это значит, что веб-приложения на ASP.NET vNext вы сможете разрабатывать в своих уютных Макашечках и Убунточках.
Чем я незамедлительно и решил воспользоваться.
ИМХО. Думаю вам не надо объяснять о красивом синтаксисе C#, строгой типизации и высокой скорости работы.
Что касается ASP.NET, то раньше все было печально, но за последние несколько лет MS достигла большого прогресса в разработке ASP.NET MVC веб-фреймворка взяв лучшие практики из RoR, Laravel и других. А когда несколько месяцев назад они официально объявили что открывают исходники своего фреймворка и становятся кроссплатформенными, пламя любви к ним вспыхнуло вновь.

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

СПРН — Система предупреждения о ракетном нападении

Время на прочтение6 мин
Количество просмотров10K
image
23 января 1995 года, город Солнечногорск, командный пункт СПРН. На пульте мониторинга системы загорелось табло «РАКЕТНОЕ НАПАДЕНИЕ». Система зафиксировала старт ракеты класса «Трайдент». Анализ траектории показал, что ракета, при активации заряда на высоте, может вывести системы дальнего обнаружения СПРН из строя или может быть наведена на северные города страны. Системы наземного дальнего обнаружения подтвердили запуск. Все стратегические силы были приведены в полную боевую готовность. Бомбардировщики выкатываются на полосы ВПП, ракеты наведены и готовы к запуску. На столе перед Президентом страны открыт ядерный чемоданчик.
Читать дальше →
Всего голосов 209: ↑193 и ↓16+177
Комментарии343

Как определить «Где я?» в приложениях на Windows Mobile

Время на прочтение16 мин
Количество просмотров4.8K
Каким образом реализуются приложения, зависящие от местоположения сегодня? Как правило, на ум сразу приходит использование GPS-устройств, которые способны предоставлять координаты текущего местоположения. Однако, GPS устройства есть далеко не везде и не всегда. Давайте попробуем разобраться как реализовать более богатый способ определения текущего местоположения.
Читать дальше →
Всего голосов 51: ↑44 и ↓7+37
Комментарии65
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность