Pull to refresh
9
0
Sharkman @sharkman

User

Send message

Атрибут cleanup

Reading time 6 min
Views 6K
Цитата из документации GCC [1]:

Атрибут cleanup предназначен для запуска функции, когда переменная выходит из области видимости. Этот атрибут может быть применён только к auto-переменным, и не может быть использован с параметрами или с static-переменными. Функция должна принимать один параметр, указатель на тип, совместимый с переменной. Возвращаемое значение функции, если оно есть, игнорируется.

Если включена опция -fexceptions, то функция cleanup_function запускается при раскрутке стека, во время обработки исключения. Отметим, что атрибут cleanup не перехватывает исключения, он только выполняет действие. Если функция cleanup_function не выполняяет возврат нормальным образом, поведение не определено.




Атрибут cleanup поддерживается компиляторами gcc и clang.

В этой статье я приведу описание различных вариантов практического использования атрибута cleanup и рассмотрю внутреннее устройство библиотеки, которая использует cleanup для реализации аналогов std::unique_ptr и std::shared_ptr на языке C.
Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Comments 5

Чем быстрее вы забудете ООП, тем лучше для вас и ваших программ

Reading time 7 min
Views 216K

Объектно-ориентированное программирование — чрезвычайно плохая идея, которая могла возникнуть только в Калифорнии.

— Эдсгер Вибе Дейкстра

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

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

Многие люди и раньше обсуждали проблемы ООП, и в конце этого поста я приведу список своих любимых статей и видео. Но прежде я хочу поделиться собственным взглядом.
Читать дальше →
Total votes 194: ↑131 and ↓63 +68
Comments 1280

Закрыт сайт коллективных переводов notabenoid.com

Reading time 1 min
Views 40K

Сегодня сайт notabenoid.com стал недоступен и на нём появилась заглушка, сообщающая о прекращении работы из-за проблем с правообладателями. От лица волонтерского некоммерческого проекта «Vert Dider» выражаю поддержку данному проекту, так как этот сайт был нашей основной площадкой для работы над переводами. Надеюсь на его скорое возрождение.
Total votes 123: ↑122 and ↓1 +121
Comments 65

Ад своими руками

Reading time 19 min
Views 172K
Многие говорят – рассказывать надо не только об успехах, но и о неудачах. Полностью с этим согласен — понимание своих неудач, их причин и последствий, иногда ценнее любых успехов.

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

Но компанию, ее культуру это внедрение превратило в ад — бюрократический, системный и бессмысленный.

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

Обо всем по порядку.
Читать дальше →
Total votes 294: ↑285 and ↓9 +276
Comments 313

Делаем ядерную люстру на 100'000 люмен

Reading time 4 min
Views 282K
Существует стереотип, что «IT»-шник должен сидеть в полумраке, освещаемый лишь светом монитора. Не знаю как вам, а мне всегда было комфортнее при ярком освещении. Сначала это было 3x100W обычных лампочек, потом 250W люминесцентных ламп, после последнего переезда — одна 500W галогенка… Но этого все-же было недостаточно. Всегда хотелось иметь такое освещение, чтобы не хотелось свет сделать ярче. О создании такой люстры я сейчас и расскажу.
Читать дальше →
Total votes 143: ↑133 and ↓10 +123
Comments 134

Малоизвестные Git-команды

Reading time 4 min
Views 73K


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
Total votes 188: ↑162 and ↓26 +136
Comments 43

История о том, как я ОС в Minecraft писал

Reading time 6 min
Views 96K
image

В далеком 2011 году мир увидел такую игру как Minecraft — воксельную песочницу, где каждый творит все, что душе угодно. Спустя некоторое время народные умельцы стали писать различные модификации для нее, делающие геймплей более разнообразным. Не так давно появился мод под названием «OpenComputers», добавляющий полноценные компьютеры, программируемые на скриптовом языке Lua. И в этой статье я хочу поделиться с вами небольшим опытом, приобретенным при изучении этого крайне интересного мода.
Читать дальше →
Total votes 107: ↑101 and ↓6 +95
Comments 125

Большой список научно-фантастических сериалов

Reading time 20 min
Views 415K
image
Кадр из заставки сериала «Грань»

Предисловие

На Geektimes и Habrahabr уже были статьи со списком Sci-Fi сериалов (Фантастические сериалы — обзор от фаната, Фантастические сериалы и др.). Но все они либо содержали достаточно мало сериалов и/или поверхностную информацию о них самих, либо были предвзяты в отношении тех или иных сериалов.

В данной публикации я постараюсь предоставить большой список научно-фантастических сериалов. А благодаря голосованию — узнать какие сериалы на самом деле нравятся пользователям Geektimes.
Читать дальше →
Total votes 58: ↑47 and ↓11 +36
Comments 189

Postgres. Выборка N случайных записей

Reading time 6 min
Views 36K
При работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:

  • из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).

А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.

Первое, что приходит в голову:

 SELECT *
  FROM data_set
  WHERE id NOT IN (1,2,3,4, 5)
  ORDER BY random()
  LIMIT 5;

И это даже будет работать. Вот только цена такого решения…
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 47

Кош на комплексной плоскости

Reading time 6 min
Views 65K
В какой-то из весенних дней этого года я ехал в троллейбусе и листал комикс о Коше. В одном из выпусков была такая фраза «НО! Её можно понять, она же фракталами в горизонт перетекает, я бы тоже замешкался...». После этого я посмотрел в окно и понял, что если мы возьмём два подходящих дробно-линейных преобразования комплексной плоскости a(z) и b(z), и рассмотрим систему итерированных функций для a(z), b(z), a−1(z), b−1(z), взяв в качестве начального множества картинку с Кошем, то Кош будет перетекать фракталами в горизонт!

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

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



Читать дальше →
Total votes 214: ↑206 and ↓8 +198
Comments 26

Просмотр всех нажатий клавиш в Google Docs

Reading time 2 min
Views 37K
С мая 2010 года Google Docs ввёл новый формат документов, который сохраняет подробную историю версий. Вы можете открутить действия назад, словно в замедленном фильме. Текстовый редактор сохраняет время нажатия клавиш с точностью до микросекунды.

Журналист и хакер Джеймс Сомерс сумел взломать внутренний формат Google Docs и извлечь метки времени для каждого нажатия клавиш. Таким образом, вы можете посмотреть историю создания документа от начала и до конца. Более того, кейлоггер Google Docs очень продвинутый: он присваивает уникальные идентификаторы символам, так что знает даже, откуда и куда скопирована каждая буква!

Самое главное, что для вас открыта история нажатия клавиш и чужих документов, которыми с вами поделились коллеги для совместной работы. Это можно назвать неожиданным поведением программы. Если я создаю документ, а потом открываю к нему совместный доступ, я не могу ожидать, что все коллеги увидят полную историю, как создавался этот текст, какие слова исправлялись и какие предложения удалялись, прежде чем документ выложили на всеобщее обозрение.
Читать дальше →
Total votes 59: ↑54 and ↓5 +49
Comments 15

Первое независимое подтверждение LENR (по-простому – холодный синтез)?

Reading time 4 min
Views 267K
LENR – Low-energy nuclear reaction – Низкоэнергетическая ядерная реакция.

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


E-Cat изобретателя Андреа Росси – устройство, использующее холодный синтез для выработки большого количества дешёвой экологичной энергии – в марте 2014г было проверено независимой группой учёных, представивших сейчас 54-страничный отчёт.
Испытатели
Джузеппе Леви – Университет Болоньи, Италия
Эвелин Фоски – Болонья, Италия

Бо Хойстед, Роланд Петтерсон и Ларс Тегнер – Университет Уппсалы, Швеция

Ханно Эссен – Королевский Институт Технологий, Стокгольм, Швеция

Они исследовали маленький E-Cat в течение 32 дней, за которые реактор произвёл 1.5 мегаватт-часов энергии. Это «намного больше, чем может быть получено из любого известного химического источника для реактора подобного размера».

Интересно, что в самом отчёте написано, что 32 дня – это заранее установленный срок эксперимента. То есть, реактор выключили искуственно, и он, к тому времени, всё ещё не подавал признаков снижения выдаваемой мощности.
Читать дальше →
Total votes 195: ↑162 and ↓33 +129
Comments 457

Виртуальная прогулка по датацентрам Google

Reading time 1 min
Views 96K
Компания Google, ранее ревниво охранявшая свои датацентры от посторонних взглядов, опубликовала впечатляющую подборку фотографий, сделанных в святая святых. Более того, по датацентру в городе Ленор (Северная Каролина), теперь можно прогуляться в Google Street View или посмотреть видеотур. Пожалуй, слова тут излишни. Смотрите сами.



Total votes 61: ↑54 and ↓7 +47
Comments 42

Система автоматизации ноосферы (социальный детонатор) на базе булевой алгебры

Reading time 5 min
Views 11K

Когда я был студентом ВУЗа и учился на специальности «МОП ЭВМ», у меня были три профессиональные мечты:
1. формат музыки mp3 для личного удовольствия;
2. интранет для автоматизации организаций с целью повышения рентабельности;
3. система автоматизации ноосферы (САНС) для успешной эволюции всего общества.
За 20 лет первые две мои мечты осуществились, и сам я стал продвигать различные Интранет-проекты, а вот с третьей моей мечтой что-то не заладилось. И что самое обидное, за 20 последних лет человечество ни на шаг не приблизилось к моей третьей мечте. И я решил, что видимо, придется самому поработать, чтобы сказку сделать былью.

Система автоматизации ноосферы


Итак, что же за третья мечта? Все очень просто – я предполагал, что в скором времени появится система где-то в сети Интернет, в которой можно будет:
  • уложить новые знания (или удостовериться, что они уже выложены кем-то другим);
  • получить знания по интересующей проблеме (или удостовериться в их принципиальном отсутствии);
  • обратиться за уточнением к экспертам по интересующей проблеме (сегменту знаний);
  • собрать (как виртуально, так и реально) группу единомышленников для получения/уточнения интересуемых знаний или иных целей;
  • получить извещение, когда в системе появится новое знание по интересующей проблеме.

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

Социальный детонатор


Вроде бы я выше перечислил информационную систему с немудреными принципами, но ее реализация в реальности многократно ускорит социальную эволюцию всего общества, возможно в разы, а то и на порядок.
Читать дальше →
Total votes 28: ↑12 and ↓16 -4
Comments 35

ОАО КМЗ возобновило выпуск фотообъективов

Reading time 1 min
Views 70K
«Красногорский завод им. С.А. Зверева» возобновил выпуск трех фотобъективов:


Думаю, это довольно радостная весть, как для желающих купить Гелиос-40 за нормальную цену (не по дикой цене, как на Молотке), так и вообще, т.к. фототехника в России практически не производится.
В планах (судя по участию в выставке Photokina 2012, так и по некоторым другим источникам) выпуск и других объективов.
Total votes 86: ↑84 and ↓2 +82
Comments 190

Представлен работающий прототип ховербайка

Reading time 1 min
Views 7.1K
Компания Aerofex представила публике уже работающий прототип ховербайка. К сожалению, в ближайших планах компании – доработка платформы для беспилотного использования, но можно надеяться, что в будущем найдется место и пилотируемым версиям. Сама разработка, по утверждению представителей компании, родом еще из 1960-х, но тогда у нее было несколько неразрешимых технических проблем. Теперь же прототип доработан и даже испытан. Пилотируемая версия сейчас испытывается на высотах до 4,5 метров и скорости до 50 км/ч, но это далеко не предел возможностей аппарата. В ближайшем будущем Aerofex планируют адаптировать платформу к беспилотному использованию и распространять получившийся аппарат в различных сферах от сельского хозяйства до армии.

Под катом пара видео и интересная ссылка
Total votes 86: ↑77 and ↓9 +68
Comments 113

Упаковка .NET приложений для N900 на примере Bless

Reading time 3 min
Views 1.2K
Рантайм и библиотеки Mono у нас уже есть. Но они наврятли попадут в репозитории Nokia по причине достаточно «весёлой» процедуры их сборки. Я попробую, конечно, пропихнуть в раздел non-free, но никаких гарантий нет. Ссылаться на внешний репозиторий некошерно, а держать несколько клонов этих пакетов проблематично. Как быть? Да достаточно просто. Упаковать рантайм и библиотеки в автономный исполняемый файл при помощи утилиты mkbundle. Кстати, вопреки опасениям я не заметил разницы во времени запуска и потреблении памяти до и после упаковки.



Читать дальше →
Total votes 42: ↑32 and ↓10 +22
Comments 12

Мой опыт восстановления зрения

Reading time 9 min
Views 277K
   Этим летом я был на некоторое время предоставлен сам себе – всех своих я отправил подальше от дыма, а сам, недолго думая, решил немного подтянуть здоровье. Не просто записаться в тренажерный зал и накачать «квадратиков» для пляжа, а именно обследоваться у некоторых врачей, чтобы выработать для себя вектор дальнейших действий, дабы совсем не превратиться в «овоща».

image

   Расскажу лишь про свой опыт восстановления зрения – именно оно больше всего подвержено риску у любого «компьютерного» человека.
Читать дальше →
Total votes 494: ↑397 and ↓97 +300
Comments 208

История одного взлома

Reading time 2 min
Views 1.3K
Я администратор одного не очень большого сайта. Хочу рассказать одну интересную историю.

Вчера наш сайт заразили. Хакер, используя эксплоит, залил скрипт-резидент и поприписывал к каждому исполняемому файлу код вызывающий его. Проблема была в галерее Coppermine старой версии — дырявый скрипт (mea culpa, не уследил). Хакер применил классический Google hacking, чтобы найти галерею.

Последовательность действий очень продумана и доказать преступление хакера сложно. С немецкого IP (217.20.118.150, по видимому арендованый сервер) была прощупана версия галереи, затем через дыру в скрипте заливается скрипт-загрузчик. С того же немецкого IP этот скрипт запрашивается по HTTP, что приводит к его исполнению на стороне нашего сайта. Исполняющийся скрипт-загрузчик подсасывает с сервера IP 78.157.140.3 скрипт-резидент (обращение происходит именно по IP) copper.txt, запаковывает / записывает его в одну из папок куда разрешена запись (уже в виде php) и прописывает в первой строке всех файлов php вызывающий его код (тоже упакованый). После этого скрипт-загрузчик самостирается (не знаю виден ли на немецком сервере этот скрипт из инета, копии на нашем сервере не осталось). Далее при открытии любой страницы где используется php происходит запуск скрипта-резидента, который запрашивает исполняемый код с сервера по адресу nomcen.biz (домен сейчас соответствует тому же IP 78.157.140.3). В скрипте-приписке в каждом файле была синтаксическая ошибка, поэтому сайт просто выдавал пустые страницы (сообщение об ошибке съедалось в результате применения ob_start-а). Не будь её — скрипт-резидент тихо отрабатывал бы нужное хакеру дело.
А теперь самое интересное: доказательств что заразили с немецкого сервера у меня мало (есть только две записи в логе, сам скрипт неизвестен и где его искать в сети разумеется не известно). С IP 78.157.140.3 исполняемый код брался именно нашим сервером (работал скрипт-загрузчик). Обращение к домену тоже было скриптом работающим на нашем сайте (работа скрипта-резидента). Регистратор домена принимает притензии только по поводу спама, по поводу распространения эксплоитов они рекомендуют обращаться к хостеру.

Итого: мы видим хакерскую технологию с определённой степенью защиты от уголовного преследования.

P.S.: Данный текст не претендует на новизну и написан не для поучения. Основная мысль с которой он писался «пусть полежит здесь, может кого-нибудь заинтересует».
Total votes 45: ↑41 and ↓4 +37
Comments 12

Information

Rating
Does not participate
Location
Алтайский край, Россия
Date of birth
Registered
Activity