Pull to refresh
46
0
Андрей Юношев @YoungSkipper

User

Send message
Кэш браузера хороший пример.

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

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

И это правильно. Ибо потом я приду туда где интернет 10 килобит и пинги по 4 секунды и очень растроюсь без кэша.

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

Вот вы пишите

Если Хабраридер сохраняет локально скриншоты в статьях, это кэш.

И как я понимаю, предлагаете сохранять в Library/Caches из-за чего пользователь может получить следующе поведение — зашел в статью, загрузил скриншоты, зашел еще раз они загрузились быстро, зашел еще раз никуда не заходя — загрузились медленно.

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

С играми, чтобы упростить пример, вот вам пример, у нас в игре есть встроенный бразуер на вебвью который позволяет ходить по порталу в игру (никакого отличия от хабраридера же?) — каждый раз когда там грузится странчика, загрузки всех картинок перехватываются и они кладуться пользователю на диск. В вашем понимании это кэш. А в моем понимании я хочу, чтобы у пользователя даже через полгода при открытии портала в игру все грузилось быстро — что гарантировать размещая данные в Library/Caches нельзя.

Т.е. может в Хабраридер можно позволить так поступать с пользователями, а нам нет.
Данные в Library/Caches могут быть удалены системой — т.е. пользователь может лишиться своего кэша внезапно. Для разработчиков игр например это критично, да и как пользователю мне лично не приятно.

Поэтому все же лучше хранить в папке приложения, просто на папку с кэшом ставить флаг, что ее не нужно синхронизировать с iCloud.
Слово «новых» наверно нужно либо убрать либо взять в кавычки, ибо если я правильно понял то коммиту уже три года :)

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

На самом деле, плагин для Xcode — это вообще не обязательно, да и помоему официальных путей сейчас нет. Но можно проще — у Xcode есть папка DerivedData — куда собственно и падают, все промежуточные файлы сборки проекта. Там много чего, но в том числе есть и d/dia/o файлы. Сейчас пропробую проверить чтобы он туда и i файлы добавлял. Т.е. по хорошему пути к этой папке вам достаточно, чтобы запустить свой анализатор.

Другое дело, то что clang там например такой сейчас
Apple LLVM version 5.0 (clang-500.2.75) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

И он может таки отличатся, от стандартного.
Но уже в первом пункте может быть засада — например не быть места в Диске? Ну и странно, что для того чтобы просто скачать файл нужно его себе в Диск перемещать, а потом удалять.

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

Т.е. wget --continue на неделю на плохом интернете не поставишь уже — может сменится.

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

curl 'https://downloader-default2j.disk.yandex.ru/rdisk/5009ab0a5cfd1f7eb0e254ebb100e1b9/524dc81e/x4HCiStC2DvKAa1kKMcP87B2k28DF4a2wE-o8SkRYFhrBUq3otILRlaqsZGk3cu_q_J6bpmRyOJonT3VoXnDag==?uid=0&filename=random_data.10mb&disposition=attachment&hash=cO/JeeoWUcNRsjzPuSPBhTlB8tvmD9kXUH/MeXT7do8%3D&limit=0&content_type=application%2Foctet-stream&rtoken=f9dfc306a581fcb5ae1c5652885c98bd&rtimestamp=524dc81f' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: downloader-default2j.disk.yandex.ru' -H 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: https://disk.yandex.ru/public/?hash=cO/JeeoWUcNRsjzPuSPBhTlB8tvmD9kXUH/MeXT7do8%3D&ncrnd=8469&locale=ru' -H 'Cookie: yandexuid=1022315551361942800; fuid01=4e6f792f0ea2138e.wB1IcGQtAvzEQS8b4VPBAzQxgzHTkhblkoJVlrYrAX8S6FYp9_suY1KPtrTtYPnCD2gmtvAdBjXQP4HRm-eoHihFQw8zx-GO-Dx_jX1HBBn8LBmai7rYeS0K0epLAg0C; yabs-frequency=/4/Im010FvRG5BEc3zH/aTS5BLmL9poT12rS5IURrmWNN1Ky/; my=YzYBAAA=; L=FVlDc0pkAgdxfEVYfl9XZksBdgtHQnRQW1AoChcXKD44CE9ZBnJwLUM3KCAzF1IfLDoAP3Z1UTgQGg5BXUcXMw==.1380825753.9996.272955.01829e03d6124f673e036c164e41ace9; ys=; yp=' -H 'Connection: keep-alive' --compressed

Но это выглядит неудобным. Считайте я таким образом просил прямые ссылки на файлы, и наверно, не оригинален.
Эээ, это я знаю, вопрос куда отдавать то? На какой простите URL-то?
Т.е. докачка есть все же? А каким образом? Вот есть у меня есть ссылка на файл yadi.sk/d/iDuEDZgRAMCvd — и есть у меня на диске первые X байт этого файла, хочу докачать остальные — как я могу это сделать?
Но еще нужно уточнить, что например для миллиарда файлов мы легкой уберем 18 нулей после запятой. Чего конечно тоже хватает.
Интересная юридическая коллизия возникает.

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

Допустим контрольная сумма допускает колизии в очень редких случаях.

Т.е. о одной стороны мы с очень большой вероятностью знаем, что какой-то пользователь залил на сервер яндекс-а наш «незаконный» файл. С другой стороны доказать 100% это не можем, можем говорить о вероятности.

По хорошему суд должен приписать яндексу проверить дейсвительно ли файл является «нашим» и если да то «выдать» пользователя.
Это то понятно. Скажем так — это был скрытый вопрос — а зачем сайты то гасить и редирект ставить?
Что-то мне кажется, сайт и вся инфраструктура для него переживет и год при не обходимости без людей.
Да и мы понимаем, то того что редирект поставили, собственно ничего не поменялось…

Это скорее политический и эмоциональный акт — вот вам гады, договаривайтесь быстрее?
Да ладно марсоход, у них вот даже сайты в «отпуск» ушли — www.nasa.gov Хотя в целом логично да, хостинг тоже за счет федерального бюджета. Особенно весело тем, кто на внеочередные Н1В сейчас подается.
Ну вот смотрите как я рассуждаю, мы можем сделать так

1> Tmp = ets:new(table, []). 16400 2> ets:insert(Tmp, {1,2,3}). true 3> ets:insert(Tmp, {1,2,1}).

А потом как нибудь так

ets:match(Tmp, [{'$1','$2','$3'}, {'>','$3', 2}]).

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

И я например логично ожидаю что можно было бы описать функцию примерно таким образом

fun([{'$1','$2','$3'}, {'>','$3', 2}]) ->

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

Т.е. с одной стороны мы можем по патерну выбирать данные с условиями которые добавлены через ets:insert — с другой не можем так же по такому же паттерну матчить их как входящие параметры функции, а вынуждены делать это через гуарды
И все же возвращаясь к пункту 1 — как сделать так чтобы матчилось если все элементы списка (или просто все параметры) разные?

По второму, я спросил — match specification поможет или нет?
Это понятно, слово «компиляции» в кавычки взять нужно было. Но вопрос открытый — так одно даст проверить, что не тот тип передается или нет. Или с какой-то вероятностью?
По превому все смущает, пример можно? Т.е. понятно как это сделать например для трех элементов

all_three_elements_of_list_is_different([_,R,R]) -> false;
all_three_elements_of_list_is_different([R,_,R]) -> false;
all_three_elements_of_list_is_different([R,R,_]) -> false;
all_three_elements_of_list_is_different([_,_,_]) -> true.

Но для четыре, пяти, шести и больше очень громоздко :)

По второму пункту — как же -spec для функций? Как раз же получается, что мы можем проверить тип значения? На этапе компиляции правда…

Ну и опять же у меня есть ощущение, что match specification мне поможет и в первом и во втором случае? Нет?
Про сопоставление как всегда кратко :( Хотя самое интересное же…

Можно ли написать шаблон условие что все входящие значения разные, т.е. например есть для триплетов вида {1,2,3} или {atom1, atom2, atom3} выпонялось, а для триплетов вида {1,1,1} или {atom1, atom2, atom1} нет?

Можно ли написать шаблон чтобы он проверял типы? Т.е. например требовал чтобы значение было всегда атомом, а второй переменной типа integer?

Можете оценить сколько денег ушло именно на подготовку выхода на КикСтартер?
Т.е. видео, озвучка, все материалы, работы юристов — т.е. просто все трудо-часы умноженые на ставку человека?
Плюс цена PR-а.

А то по ряду компаний складывается ощущение, что цена усилий на выход на КикСтартере, составляет чуть ли не четверть от полученных денег зачастую.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity