Pull to refresh

Почему FAR — центр моей компьютерной вселенной

Reading time4 min
Views51K

Какую программу вы обычно запускаете сразу после загрузки операционной системы? Кто-то сразу стартует браузер — поглядеть, кто там сегодня в Интернете (на Хабре) неправ. У многих — это редактор кода: «Я, как утром встал, сразу за дрель!». Возможно, вы сначала привычно открываете мессенджеры и почту — проверить, что там нового и важного.

Я обычно сразу после запуска операционки открываю свой Любимый Файловый Менеджер. Это «переходящее звание» — в разные периоды моего компьютерного прошлого этой чести «удостаивались» разные приложения с классическим двухпанельным интерфейсом. Сначала это был простой, но универсальный Norton Commander. Потом появился DOS Navigator со всяческими классными фичами: CD-плеер, телефонная книга с дозвоном по модему, встроенный табличный редактор и прочие прекрасные и поразительные для тех лет вещи.

Когда Windows прочно вытеснил DOS и все понемногу забыли про файл autoexec.bat, звание моего любимого файлового менеджера плавно перешло к Total Commander. Он продержался довольно долго, но в какой-то момент в мою жизнь буквально ворвался FAR...

Читать далее
Total votes 164: ↑167 and ↓-3+170
Comments578

История о том, как мы нашли и починили баг в Vulners.nse

Reading time1 min
Views1.2K
Всем привет, сегодня мы хотим вам рассказать, как нашли и зафиксили баг в Iua скрипте vulners.nse.

Если вы никогда этим не пользовались, поясняем. Vulners.nse. – это скрипт расширяющий возможности NMAP и позволяющий использовать результаты сканирования для поиска уязвимостей сетевых устройств и сервисов в большой базе данных vulners.com.

Мы выполняли интеграцию сканера NMAP в качестве стороннего средства сканирования сети с целью инвентаризации и поиска известных уязвимостей на найденных в сети устройствах. Последнее обновление скрипта явным образом указало gzip в качестве принимаемого от сервера vulners.com ответа, но не стало распаковывать пришедшие данные.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments2

13 декабря в Москве пройдет Lua in Moscow Meetup

Reading time2 min
Views1.3K


В пятницу 13 декабря в московском офисе Mail.ru Group пройдёт открытый Lua митап — встреча сообщества Lua in Moscow, где можно обсудить Lua, его использование, проблемы, новые наработки, получить ответы на наболевшие вопросы. Наши докладчики поделятся победами, неудачами, помогут вам извлечь лучшее из своего опыта. Подробная программа под катом.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments0

Российская игровая студия Case разрабатывает новый игровой движок Case Engine

Reading time1 min
Views2.9K

Российская студия Case заявила о создании собственного игрового движка Case Engine. По словам студии, движок будет бесплатным для инди‑разработчиков, но без доступа к исходному коду. Доступ к нему будет у организаций и крупных студий, купивших лицензии. Также студия утверждает, что её игровой движок будет работать даже со слабыми системами.

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

RooX добавила в свою систему RooX UIDM платформу Tarantool

Reading time2 min
Views628

Компания RooX заявила об обновлении системы управления аутентификацией и авторизацией RooX UIDM. В обновлении ПО появилась возможность создания промежуточного слоя для обработки данных под названием Tarantool.

Tarantool представляет собой платформу in‑memory вычислений с гибкой схемой данных для создания высоконагруженных приложений. Включает в себя БД и сервер приложений на Lua. Платформа разработана компанией VK.

Разработчики из RooX утверждают, что база данных на основе Tarantool обладает высокой скоростью работы по сравнению с традиционными СУБД и обладает теми же свойствами: персистентностью, транзакционностью ACID, репликацией master‑slave, master‑master.

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

Программирование в Roblox для детей: как создать игру при помощи нейросети

Level of difficultyEasy
Reading time7 min
Views2.3K

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

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments3

Tarantool 3.0

Level of difficultyMedium
Reading time15 min
Views8.1K


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

В этой статье я попытаюсь рассказать о том новом, что появится в Tarantool 3.0, не простым перечислением изменений, а описывая проблемы, которые мы пытались решить. В таком ключе это может быть интересно и тем, кто не собирается устанавливать Tarantool, — просто с технической точки зрения.
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments23

Exception Handling: сквозь мультивселенные интероперабельности

Reading time10 min
Views2.4K


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

Меня зовут Максим Кокряшкин, я занимаюсь поддержкой и расширением функциональности форка LuaJIT, интегрированного в Tarantool. В этой статье мы обсудим, как интероперабельность исключений помогает упростить обработку ошибок на стыках разных языковых рантаймов, а также посмотрим, как можно реализовать интероперабельность стандартными механизмами обработки исключений.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments0

Некоторые мысли в связи с выходом новой версии «МойОфис» версии 2.7 и документации по API надстроек

Level of difficultyEasy
Reading time9 min
Views2K

Прошло полгода, как был опубликован цикл моих статей по поводу проблем разработки, и как следствие — способов хоть какого то решения проблем в плане их обхода. Одной из моих претензий к фирме «Новые облачные технологии» (далее НОТ), была крайне невнятная документация к API по разработке своих собственных расширений. С той поры, было выпущено 2 новых версии самих редакторов, и к каждой из них, было так же выпущено обновлённое руководство программиста. Если в версии 2.6 изменений можно сказать я не обнаружил, по сравнению с предыдущей версией 2.5, то вот намедни решил посмотреть, что же изменилось для версии 2.7, которая выпущена незадолго до нового 2024 года. И не скажу, что меня особо порадовали изменения в документации (и тем более в API), но в целом — вполне видна работа, хотя бы в направлении более внятного изложения идей заложенных программистами НОТ, в вопросах использования их API. Далее, я по пунктам изложу что я заметил ценного, и в конце выскажу своё сугубо субъективное мнение.

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

Когда Random совсем не случаен

Level of difficultyMedium
Reading time7 min
Views20K

Этот пост — рассказ об истории, случившейся больше десятка лет назад; её код был мной утерян. Поэтому прошу простить меня, если я не вспомню точно все подробности. Кроме того, некоторые подробности упрощены, чтобы от этой статьи могли получить все, кому нравится компьютерная безопасность, а не только любители World of Warcraft (хотя, полагаю, диаграмма Венна этих двух групп сильно пересекается).

Когда мне было примерно 14 лет, я узнал об игре World of Warcraft компании Blizzard Games, и она сразу же меня увлекла. Вскоре после этого я нашёл аддоны, позволявшие модифицировать внешний вид и функциональность интерфейса игры. Однако не все скачанные мной аддоны делали именно то, что мне было нужно. Мне хотелось большего, поэтому я начал разбираться, как они сделаны.

Забавно, что в моём серьёзном увлечении программированием можно обвинить World of Warcraft. Оказалось, что код был написан на языке Lua. Аддоны — это просто парочка файлов исходного кода на .lua в папке, напрямую загружаемых в игру. Барьер входа был невероятно низок: достаточно отредактировать файл, сохранить его и перезапустить интерфейс. То, что игра загружала твой исходный код и ты мог видеть его работу, было настоящим волшебством!

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

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

Как мы разрабатываем игры для Pixel Quest, публикуем исходники и делимся частью выручки

Level of difficultyMedium
Reading time6 min
Views2K

Полгода назад я писал про наш путь к открытию первой пиксельной игровой Pixel Quest: путь от прототипа до первого игрового заведения. Сегодня хочу рассказать, как мы решили проблему разработки игр путём перехода с Go на Lua и публикации исходников, а также о планах делиться частью выручки со сторонними разработчиками.

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

Обнаружение SSH-туннелей по размеру пакетов

Level of difficultyMedium
Reading time8 min
Views17K

Иллюстрация из книги «Справочник киберсантехника»

Протокол SSH — очень мощный инструмент, который используется для удалённой консоли или передачи файлов (scp, sftp). Есть менее известная функция перенаправления портов. Такие SSH-туннели используются для пробития файрволов и хорошо скрываются от обнаружения стандартными средствами мониторинга типа Trisul, Zeek (ранее был известен как Bro), Suricata и Snort. Поэтому для их обнаружения в корпоративной сети используются другие методы.
Читать дальше →
Total votes 74: ↑70 and ↓4+66
Comments23

Gmail Notifier своими руками

Reading time6 min
Views5.2K
image Начал я обустраиваться под Linux'ом и обнаружил, что мне сильно не хватает тех красивых попапов, уведомляющих о приходе новой почты, которые умеет показывать Google Talk под Windows. Гугление обнаружило несколько готовых скриптов, позволяющих реализовать подобные попапы (среди прочих: bash-скрипт, bash-скрипт + python-скрипт, плюс pidgin умеет проверять почту), но все подходы слегка уродливы были мне не по душе и требовали доработки напильником, поэтому я решил сделать всё с нуля (пусть будет уродливое, но своё!). О вещах, с которыми я столкнулся в процессе и пойдёт речь…

Читать дальше →
Total votes 137: ↑128 and ↓9+119
Comments111

Встреча в Донецке: Скриптинг, CSS, GAE, HD video

Reading time1 min
Views522
Дата: 20.06.2009 12:00—15:00
Место: Донецк, ул. Артема 110, кофейня Изба-читальня

Неформальные доклады по 30-60 минут. Общение.

Скриптинг для desktop-приложений
python, lua,…
Константин Галайко

Нововведения в CSS3
css, html,…
Дмитрий Подгорный

www.HOTAROUND.com/ABOUT
python, gae, javascript,…
Артем Дударев

Веб-хранилище HD video
zfs, python, django, mediatomb, javascript,…
hd.litovchenko.com
Александр Литовченко

Пожалуйста, зарегистрируйтесь:
spreadsheets.google.com/viewform?formkey=cnU0dlBlc3VJbkNZR00zMkxyT1JvQ0E6MA
www.izba4i.com/meetings
Total votes 5: ↑5 and ↓0+5
Comments0

Что можно ожидать от Луа 5.2?

Reading time8 min
Views5.4K

Опубликована первая превью-версия Луа 5.2


Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

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

Анонс здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61229

Дополненный список изменений от авторов здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61505

Скачать исходники можно здесь: http://www.lua.org/work/lua-5.2.0-work1.tar.gz

Сборка под Windows здесь: http://article.gmane.org/gmane.comp.lang.lua.general/61528

Посмотреть исходники в онлайне можно, например, здесь.

Update: Выложен 5.2.0-work2, анонс здесь.
То, что написано ниже, скорее всего, будет интересно только людям, близко знакомым с языком.
Total votes 70: ↑60 and ↓10+50
Comments57

Добавление скриптинга в программу с помощью Lua

Reading time6 min
Views20K

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

В этой статье, с помощью простой программы, я хочу показать пример встраивания Lua в ваш проект.

Примеров программ, которые используют Lua достаточно много. Далеко не полный список программ, использующих Lua, можно посмотреть здесь Lua Wiki и здесь Wikipedia
Читать дальше →
Total votes 58: ↑53 and ↓5+48
Comments120

Контроль типов аргументов функций в Lua

Reading time12 min
Views11K

Задача


Lua — язык с динамической типизацией.

Это значит, что тип в языке связан не с переменной, а с её значением:

= "the meaning of life" --> была строка,<br/>
= 42                    --> стало число

Это удобно.

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

Рассмотрим наивный пример:

function repeater(n, message)<br/>
  for i = 1, n do<br/>
    print(message)<br/>
  end<br/>
end<br/>
 <br/>
repeater(3"foo") --> foo<br/>
                   --> foo<br/>
                   --> foo

Если перепутать местами аргументы функции repeat, получим ошибку времени выполнения:

> repeater("foo", 3)
stdin:2: 'for' limit must be a number
stack traceback:
	stdin:2: in function 'repeater'
	stdin:1: in main chunk
	[C]: ?

«Какой такой for?!» — скажет пользователь нашей функции, увидев это сообщение об ошибке.
Читать дальше →
Total votes 34: ↑27 and ↓7+20
Comments20
1
23 ...