Search
Write a publication
Pull to refresh
0
@Ilya2019read⁠-⁠only

User

Send message

Фетиш LaTeX (или Не пишите в LaTeX! Он только для вёрстки)

Reading time24 min
Views122K
Сейчас то время года, когда студенты выбирают себе классы для обучающих навыков. Один из навыков, который будет поощряться, — обучение LaTeX. Другие могут придти к использованию LaTeX по другим причинам: кто-то хочет сверстать книгу; кто-то слышал, что LaTeX может иметь отношение к журналу Digital Humanities; ну и так далее. Я написал это эссе в качестве предварительного введения в LaTeX. Оно не научит вас использовать редактор (я не имею квалификации для этого!), но я попытаюсь популярно объяснить тем, кто ещё не использует LaTeX, для чего именно он нужен. Это поможет им понять, стоит ли LaTeX усилий на его изучение (не говоря уже о том, чтобы просто заставить его работать). Почему такое большое эссе? Потому что многие из евангелистов превратили LaTeX в фетиш и распространяют дезинформацию о его истинных достоинствах. Хочу прояснить ситуацию.

1. Что такое LaTeX?


По словам официального сайта, LaTeX — это «высококачественная система набора и вёрстки» и «стандарт де-факто для обмена и публикации научных документов». С этим никто не спорит.
Читать дальше →

Чем может грозить точка в конце доменного имени

Reading time4 min
Views98K
Существует такое понятие, как корневой домен, соответственно, в конце каждого домена есть точка. Возможно, вы и не подозреваете, что ваш сайт доступен по доменному имени с точкой в конце (domain.zone.), так как браузеры позволяют обращаться к сайтам, как с точкой в конце домена, так и без неё.
Читать дальше →

8 способов хранения данных, которые представляли себе фантасты

Reading time7 min
Views16K

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




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

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

Влажное хранение

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

Как мы слили финал IT-Планеты по программированию

Reading time16 min
Views10K
Не мы плохие, а багов много. Разработка искусственного интеллекта для игры “Хоккей” за ~7 часов.

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

Дело в том, что на интересующие нас вопросы мы получали максимум 6 слов, а потом сразу же слышали недовольства о багах, с которыми столкнулись участники. Только один человек написал:
Не хочу писать ничего отрицательного, думаю, это некорректно, да и организаторам самим должно быть грустно. Поэтому скажу, что идея задания достаточно интересная, хотя лично мне не очень нравится такой формат соревнований (Анна Прозорова).

Из заголовка статьи понятно, что мы ничего не выиграли. И да, именно “мы”. За конкурсные дни у меня появилось много хороших знакомых, в том числе и Анна (odrus), являющаяся соавтором данной статьи. Также в последний момент мы разговорились со Львом (zadamantiy) и с его разрешения описали участие в финале.

Лично я являюсь участником движения “A Complaint Free World”, но я перевешу свой браслет на другую руку и буду жаловаться, хоть и в шуточной форме, ведь, с другой стороны, таковы условия конкурса и нужно быть хорошим специалистом, чтобы выиграть в нём и совладать с недочётами! Никаких претензий у нас нет, наоборот — большое спасибо!

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

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


DEFCON'20 / DEFCON'20 CTF. Материалы, overview

Reading time4 min
Views6.8K
image

26-29 июля в Лас-Вегасе (штат Невада) проходила одна из крупнейших хакерских (в прямом смысле своего слова) конференций — DEFCON, в рамках которой так же проходили соревнования CTF. В этому году в них приняло участие 4 команды из России — Leet More + Smoked Chicken, SiBears и HackerDom.

Содержание


  • Общий обзор
  • Бейдж от Parallax
  • Capture The Flag
  • Материалы
  • Послесловие


Warning: Трафик, объемный пост
Читать дальше →

О том, как можно проверять значения, введёные пользователем

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

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

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

На практике это выливается с довольно длинные последовательности «if-else». Лично мне это жутко не нравилось, так как сложно с первого взгляда определить, какие поля как проверяются и какие сообщения выдаются в случае ошибок. А ведь полей в форме может быть и десять, тогда код проверки вообще затягивается. Вобщем, я задумался над тем, как можно минимизировать объём работ и вот что из этого получилось.
Читать дальше →

Основные зарубежные сборники аниме-картинок отключены Роскомнадзором

Reading time3 min
Views81K
В сáмом начале месяца (1 ноября) я упоминал на Хабрахабре о закрытии доступа к «Sankaku Complex» Роскомнадзором, а veam в комментариях прибавил, что несколькими днями ранее того был закрыт доступ и ко крупной доске картинок — к Gelbooru.

Сейчас я вынужден прибавить к этому не менее печальную новость. Все читатели, из России собравшиеся посетить другой крупный сборник аниме-картинок — сайт Danbooru, на идее которого Gelbooru был изначально основан — вот ужé несколько дней принуждены наблюдать сообщение о блокировке:

[скриншот]

В твиттере ещё одного значительного сборника аниме-картинок (Yande.re, название которого происходит от японского слова «ヤンデレ», означающего безумную и смертоносную влюблённую) позавчера была опубликована новость о том, что домогательства Роскомнадзора, обращённые к их провайдеру, поневоле привели к решению самостоятельно блокировать доступ для всех российских читателей сайта. И действительно можно видеть «403 Forbidden» от nginx.

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

Как думать на SQL?

Reading time8 min
Views625K
Надо “SELECT * WHERE a=b FROM c” или “SELECT WHERE a=b FROM c ON *” ?

Если вы похожи на меня, то согласитесь: SQL — это одна из тех штук, которые на первый взгляд кажутся легкими (читается как будто по-английски!), но почему-то приходится гуглить каждый простой запрос, чтобы найти правильный синтаксис.


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


SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
  FROM books
  WHERE stock>(SELECT avg(stock)
    FROM books))
GROUP BY members.firstname, members.lastname;

Буэ! Такое спугнет любого новичка, или даже разработчика среднего уровня, если он видит SQL впервые. Но не все так плохо.


Легко запомнить то, что интуитивно понятно, и с помощью этого руководства я надеюсь снизить порог входа в SQL для новичков, а уже опытным предложить по-новому взглянуть на SQL.

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

Неожиданная красота простых чисел

Reading time8 min
Views70K
image

Значимость простых чисел, как в повседневном применении, так и во всех отраслях математики, невозможно переоценить. Мы спокойно полагаемся на их особые свойства, используя их как фундамент бесчисленного количества элементов нашего общества, ведь они являются неделимой частью самой ткани природы. Простые числа, устойчивые к любому делению на множители, часто называют «атомами» мира математики. Карл Саган сказал о них так:

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

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

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

Взгляд на обновления Android с точки зрения разработчика

Reading time4 min
Views12K
Кода без ошибок не бывает. Питер Нортон говорил: «Идеальному коду место в музее: там ценят всякие древности». А для исправления ошибок – существуют обновления.

Хотелось бы поделиться своим взглядом на обновления с точки зрения разработчика рантайма Android. Часть нашей большой команды находится в России, я занимаюсь подсистемой Java, оптимизацией виртуальной машины и исправлением недочетов по мелочам. Зона нашей ответственности – всё, что выше ядра и ниже приложений. Мы хотим добиваться максимальной эффективности приложений, в том числе — энергоэффективности. Это то подразделение Samsung, которое не видно пользователю, но очень важное, ведь ошибка в этом слое ведет к неправильному поведению многих приложений.

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


Источник — xkcd
Читать дальше →

Уязвимости смартфонов

Reading time3 min
Views14K
Привет, Хабр! Меня зовут Ярослав Сташевский, я менеджер по информационной безопасности «ИТ-ГРАД». Сегодня я хотел бы поднять тему, которая касается каждого, — уязвимости смартфонов. Люди привыкли доверять своим мобильным устройствам очень чувствительную информацию. Это касается и файлов, хранимых на устройстве, и того, что передается беспроводным путем. Согласитесь, вы сами вряд ли часто задумываетесь о том, что кто-то может целенаправленно навредить вашему смартфону или похитить данные. Создается ложное ощущение собственной безопасности, основанное как на доверии к технологиям, так и на убеждении “а кто меня будет ломать, кому я так сильно нужен?”.

Этой небольшой заметкой я хочу напомнить всем, что способов атаковать мобильный телефон существует предостаточно и многие из них достаточно просты в реализации. В частности, мне хотелось бы проверить, насколько реально безопасной является двойная аутентификация (ввод пароля на сайте + код из SMS/звонка).

Спойлер: взламывать я буду свой собственный смартфон.


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

5 способов вычисления чисел Фибоначчи: реализация и сравнение

Reading time5 min
Views334K

Введение


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

Код предназначен для Python 3, хотя должен идти и на Python 2.

Для начала – напомню определение:

Fn= Fn-1+ Fn-2

и F1= F2=1.
Читать дальше →

Основы SQL на примере задачи

Reading time6 min
Views689K
В этом руководстве мы рассмотрим основные sql команды на примере небольшой задачи. При прочтении желательно сидеть за консолью mysql и вводить все запросы для большей наглядности.

Постановка задачи


Дана база данных, в ней 3 таблицы следующего вида:




table1: user_id (INT(5), PRIMARY KEY), username (VARCHAR(50), INDEX)
table2: phone_id (INT(5), PRIMARY KEY), user_id (INT(5), INDEX), phone_number (INT(10), INDEX)
table3: room_id (INT(5), PRIMARY KEY), phone_id (INT(5), INDEX), room_number(INT(4) INDEX)

Необходимо выбрать номер комнаты в которой сидит пользователь с ником qux…
Читать дальше →

COUNT(*)

Reading time7 min
Views124K


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

Давайте начнем с простого… Эти запросы отличаются чем-то друг от друга с точки зрения конечного результата?

SELECT COUNT(*) FROM Sales.SalesOrderDetail
SELECT COUNT_BIG(*) FROM Sales.SalesOrderDetail
Подробнее

6 нежданчиков от Джулии

Reading time19 min
Views9.8K


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


Во время поисков наткнулся на курс программирования для экономистов (помимо Джулии там есть и Питон). Опытные могут пробежаться по экспресс курсу или ознакомиться с книгой How to Think Like a Computer Scientist


Далее предоставлен перевод материала из блога Christopher Rackauckas 7 Julia Gotchas and How to Handle Them

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

MS SQL 2011 – новый оператор Offset

Reading time9 min
Views79K
В новом SQL Server 2011 (Denali) расширяются возможности команды Order By с помощью двух долгожданных дополнительных команд:
  • Offset (смещение)
  • Fetch First или Fetch Next (взять первые… или взять следующие…)


Offset


Использование данной команды позволяет пропустить указанное количество строк перед тем как выводить результаты запроса. Что под этим подразумевается: Допустим, у нас есть 100 записей в таблице и нужно пропустить первые 10 строк и вывести строки с 11 по 100. Теперь это легко решается следующим запросом:
Select *
From  <SomeTable>
Order by  <SomeColumn>
Offset 10 Rows

Для тех товарищей, которые практикуют .Net должен быть знаком метод расширения для коллекций Skip, который пропускает указанное количество строк. Так вот выражение Offset работает точно так же. После того как данные упорядочены каким-либо образом, можно применять выражение Offset.

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

Занимательная практика для разработчика

Reading time3 min
Views18K
Человек остается начинающим в течение 1000 дней. Он находит истину после 10000 дней практики.

Это цитата Оямы Масутацу, которая довольно хорошо излагает суть статьи. Если вы хотите быть классным разработчиком — приложите усилия. В этом весь секрет. Проводите много часов за клавиатурой и не бойтесь практиковаться. Тогда вы вырастите как разработчик.

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

(предыдущие списки заданий для тренировки: 1) 8 учебных проектов 2) Еще список проектов, на чем потренироваться)

Проект 1: Pacman


image

Создайте свою версию Pacman. Это отличный способ получить представление о том, как разрабатываются игры, понять основы. Используйте JavaScript-фреймворк, React или Vue.

Вы узнаете:

  • Как передвигаются элементы
  • Как определить какие клавиши нажимать
  • Как определить момент столкновения
  • Вы можете не останавливаться на достигнутом и добавить управление движением призраков

Пример этого проекта вы найдете в репозитории GitHub

«Мастер совершает больше ошибок, чем новичок — попыток»
Читать дальше →

История языков программирования: SQL- стандартизация длиною в жизнь

Reading time9 min
Views36K


По мнению аналитиков CodingDojo, SQL — самый важный и нужный язык запросов среди языков программирования, как бы странно это ни звучало. Рейтинг CodingDojo учитывает статистику востребованности языков программирования на рынке труда.

Ведь СУБД – MySQL, PostgreSQL и Microsoft SQL Server – распространены повсеместно: в крупном и малом бизнесе, в больницах, банках, университетах и так далее. В принципе, SQL не ограничивается только настольными девайсами: СУБД SQLite с успехом заняла свое место на Android-смартфонах и мобильных устройствах Apple. Соответственно, такие приложения, как Skype и Dropbox, постоянно к ней обращаются.

Однако были времена, когда не было смартфонов, а этот язык уже существовал. История SQL – это не годы, но десятилетия. Поверили в него не сразу.
Читать дальше →

Выбираем длинный путь (или прощай MAX_PATH)

Reading time4 min
Views81K


Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.

В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).
Подробности

Факторизация числа, проблемы ее теории и позиция автора

Reading time7 min
Views16K
     Проблема факторизации чисел возникла не вчера, она насчитывает тысячелетия. Можно лишь гадать почему в 1900 г на Математическом конгрессе Д. Гильберт не включил ее в список своих 23 проблем, а позднее она не попала в список нерешенных математических задач С. Улама. Особое внимание и интерес математиков к проблеме обозначился лишь в последние десятилетия. Возможно, стимулом стало открытие нового направления — двухключевой криптологии, появление шифров с открытым ключом. Можно предположить, что сегодняшний интерес к проблеме факторизации чисел продиктован некоторой неопределенностью относительно теоретического обоснования стойкости к раскрытию весьма популярного сегодня двухключевого шифра (личного ключа) RSA, который в принципе может быть взломан и без знания закрытого ключа. Бесключевое дешифрование. Просто в теории алгебраических колец до сих пор не найдены необходимые для этого результаты. Но есть не менее важный аспект этой проблемы — отсутствие операции обратной к умножению чисел. Простое быстрое и доступное мультипликативное разложение составных чисел может стать такой арифметической операцией, и пополнит арсенал вычислительных средств математики.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity