Pull to refresh
  • by relevance
  • by date
  • by rating

Full Metal Jacket

Lumber room
Drill Instructor: God was here before the Marine Corps. So you can give your heart to Jesus, but your ass belongs to The Corps. Do you ladies understand?
Recruits: Sir! Yes sir!
Drill Instructor: I can't hear you!
Recruits: Sir! Yes sir!
Rating 0
Views 177
Comments 4

Использование Nginx и php для проверки прав доступа перед отдачей файлов

Website development *
Иногда на сайте возникает необходимость ограничить доступ к некоторым файлам по разным причинам(раздавать файлы только авторизованным пользователям, антилич и так далее). Для решения данной задачи можно использовать разные подходы:

  1. Раздавать файлы с помощью скрипта на php(заменить php на то, что нравится больше). При данном подходе мы передаем в качестве параметра скрипту имя файла. Код проверяет все условия, при которых возможно получения доступа к данному файлу и принимает решение, выдать 404 или запрошенный файл. Данный подход подходит для мелких файлов, однако при возрастании размера отдаваемого файла он будет потреблять много системных ресурсов, т.к. файл будет вычитываться в память и затем отдаваться.
  2. Использовать некоторые неочевидные возможности веб-серверов.

Читать дальше →
Total votes 27: ↑23.5 and ↓3.5 +20
Views 11K
Comments 12

О хэшах и проблеме распространения в торрентах

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

Что же является причиной различия хэшей?

Как известно, хэш торрента или info_hash — это хэш SHA-1 от секции info в торрент-файле. В этой секции обычно находится размер раздачи, список файлов и другая информация о раздаваемом контенте. Например, торрент, созданный нашим любимым uTorrent, изнутри выглядит примерно вот так:



Действительно, ничего лишнего. А теперь посмотрим, что даст нам второй третий по популярности в мире битторрент-клиент Azureus от того же самого файла:

Читать дальше →
Total votes 112: ↑94 and ↓18 +76
Views 12K
Comments 108

Terraria: или пишите игры правильно

Information Security *.NET *Game development *
Tutorial


Привет, дорогой хабрапользователь!

Надеюсь, все хотя бы раз играли в такую замечательную игрушку, как Terraria, ведь сегодня речь пойдет о ней и о том, как не стоит писать игры с точки зрения безопасности. Если интересно — добро пожаловать под хабракат!
Читать дальше →
Total votes 124: ↑101 and ↓23 +78
Views 57K
Comments 77

Обход областей видимости или неожиданное поведение функции EACH

PHP *
Никогда не понимал зачем в PHP функция each. Ведь есть foreach…
Но сегодня у меня «сломался» один участок кода, который жил шесть лет.
Там была конструкция с использованием each.
ошибка была исправлена секунд за 30 — давно думал исправить это все на foreach, но оставлял в качестве напоминания о том, какой индокод у меня был в свое время. Но просто исправить и пройти мимо я не мог.
Итак each против ООП:
1 — each игнорирует области видимости и спокойно выводит private свойства.
Читать дальше →
Total votes 9: ↑5 and ↓4 +1
Views 3.9K
Comments 6

В C++ единицей инкапсуляции является класс

C++ *
Заголовок статьи на самом деле представляет собой не одно утверждение, а два, хотя оба они известны:
  1. В C++ единицей инкапсуляции является класс – а не отдельный объект ([Stroustrup3e], 24.3.7.4).
  2. В C++ единицей инкапсуляции является класс – а не класс вместе с его ниже стоящей иерархией.
Читать дальше →
Total votes 41: ↑23 and ↓18 +5
Views 18K
Comments 29

Приватные методы для отладки

Development for iOS *
Наверняка уже все знают, что у UIView есть полезный метод recursiveDescription.
Вызов которого, вернет строку с описанием всей иерархии вью.

(lldb) po [[self view] recursiveDescription]
<UIView: 0x6a107c0; frame = (0 20; 320 460); autoresize = W+H; layer = […]
   | <UIRoundedRectButton: 0x6a103e0; frame = (124 196; 72 37); opaque = NO; […]
   |    | <UIButtonLabel: 0x6a117b0; frame = (19 8; 34 21); text = 'Test'; […]
   .....

Еще многие знают, что при помощи рантайма, можно получить список переменных/методов/свойств/протоколов/… класса. И обычно для этих целей пишут вспомогательный код. Но оказывается, все уже давно написано сотрудниками Apple. В UIKit.framework реализована категория с именем IvarDescription.

@interface NSObject (IvarDescription)
- (id)_shortMethodDescription;
- (id)_methodDescription;
- (id)__methodDescriptionForClass:(Class)arg1;
- (id)_ivarDescription;
- (id)__ivarDescriptionForClass:(Class)arg1;
@end

Названия метдов говорят за себя. Но давайте посмотрим, что же они возвращают.
Читать дальше →
Total votes 26: ↑20 and ↓6 +14
Views 8.2K
Comments 1

Модификаторы private и private[this] в Scala

Programming *Scala *
Sandbox
В Scala, помимо обычного модификатора доступа private существует также модификатор private[this]. Эти два модификатора довольно похожи друг на друга. К тому же в Java есть только простой private. Поэтому они легко могут вызвать путаницу или убежденность, что простой private — не такой уж и приватный, и везде надо использовать private[this] для пущей защищенности. Но давайте разберемся, как дела обстоят на самом деле.
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 9.3K
Comments 8

Делаем приватные RSS ленты действительно приватными.

Media management *
Или по крайней мере стараемся. )
Недавно я представил на суд общественности скрипт, позволяющий экспортировать фиды вместе с подзамочными записями из Livejournal.com.
И сразу послышались голоса разума:
payalnik: Какой нехороший метод открыть подзамки для всего интернета. Ждем первых скандалов.
anton: Вы же понимаете, что, сделав так, рискуете открыть подзамки всех своих друзей публично и через месяц найти их в поиске?

Целый день я ходил и пытался вспомнить: где-то я уже это видел. Кто-то уже рассказывал о подобном. И вспомнил!
А потом и найти источник не составило большого труда:
http://php.vanhecke.info/2008/01/20/republish-a-feed-or-other-data-protected-by-http-basic-authentication
Что касается персонализированных RSS лент, большинство служб не защищают контент требованием вводить логин/пароль, а предоставляют пользователю открытый, но случайный URL ленты.
Для web-based RSS агрегаторов, таких как Bloglines или Google Reader, есть ненулевая вероятность что другие пользователи наткнутся на приватное содержимое ваших лент.
Именно поэтому Bloglines представила директиву <access:restriction relationship=«deny» />
Если лента ee содержит, то Bloglines не будет отображать ее содержимое в открытом поиске.
Тем не менее, автор не нашел ни одного упоминания что Google Reader поддерживает эту директиву. Правда, эксперименты показали, что из-под другого аккаунта найти содержимое ленты с установленной директивой не удалось, хотя лента существует и добавлена уже месяц.

Ссылка на спецификацию: www.bloglines.com/about/specs/fac-1.0
Total votes 20: ↑18 and ↓2 +16
Views 637
Comments 3

«Class-fields-proposal» или «Что пошло не так в коммитете tc39»

Open source *JavaScript *IT Standards *GitHub TypeScript *

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


Казалось бы, вот оно счастье: class-fields-proposal, который спустя долгие годы мучений коммитета tc39 таки добрался до stage 3 и даже получил реализацию в хроме.


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

Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 8K
Comments 53

Swift. Class && Struct (классы и структуры) ч.1

Development for iOS *Swift *

Обычно, в учебных пособиях, книгах и прочих источниках информации, class'ы объясняют примерно так «class это - описание объекта, а объект это экземпляр класса и бла бла бла», в принципе, это частично отражает суть конструкции, но называть class в рамках языка Swift, описанием объекта, будет не совсем корректно т.к. он же еще и представляет собой тип данных и вообще можно использовать классы как независимые, самодостаточные сущности, которые не требуют инициализации. Поэтому начинать со слов «Возьмем объект животного, пускай это будет кот...» я конечно же не буде. И вообще, давайте не будем о "сложном" т.к. материал рассчитан все же на новичков, а новички могут и не знать, что такое, эти ваши объекты и инициализации. В общем я считаю подобное (я про формулировку) не достаточно информативным, поэтому будем разбирать все на примерах с переходом от простого к более сложному. Попутно к ознакомлению с классами, мы будем так же рассматривать и другие возможности языка, но обо всем по порядку.

Наслаждаться чтивом
Total votes 4: ↑4 and ↓0 +4
Views 3.2K
Comments 6