[WT] [Архив]  [Поиск] Главная Управление
[Совместно с Ычаном]
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 15681)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, OGG, PDF, PNG, PSD, RAR, SVG, SWF, TXT, XCF, ZIP размером не более 10000 кБ.
  • Ныне 2246 unique user posts. Посмотреть каталог
  • Максимальное количество бампов треда: 500
Файл: 148684155914.png-(659.24KB, 720×720, junior_developer_kyon.png)
15681
No. 15681 Закреплено watch    
Здесь можно получить помощь и консультацию по любому языку программирования, в любой сфере разработки. Не важно, программируете ли вы собственного робота, пишете серверную приблуду, интегрируете чужие API, ковыряете игру, или пытаетесь сделать сайт на Wordpress - если аноним что-то об этом знает, он обязательно поможет.

Примеры кода лучше выкладывать в виде ссылок на http://pastebin.com или http://ideone.com
Фронтендные вещи лучше выкладывать на http://jsfiddle.net

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

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

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

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

Пополняемая база знаний: http://pastebin.com/AGhLZppH
Cсылки на прошлые нити указывают сразу на архив

Другие тематические нити (не стесняйтесь их поднимать):
Java: >>/dev/13949
Python: >>/dev/14767
Сайтостроение: >>/dev/13701
Ren'Py: >>/dev/14429
Upwork: >>/dev/14444

Архив нитей:
http://410chan.org/dev/arch/res/14160.html

Прошлая нить пока тонет тут: >>/dev/14160
165 сообщений пропущено. Показаны 50 последних сообщений Развернуть все изображения
No. 16394    
>>16393
Найди компаратор, поменяй знак.
No. 16395    
>>16389
>>16393
Я порылся еще, и мне кажется, что от тебя хотят чтобы ты решил т.н. задачу "Максимального потока минимальной стоимости". По крайней мере вот человек просит ему помочь найти минимальный поток в графе (а транспортная сеть - это граф): http://stackoverflow.com/q/18598399
>In the literature this is a minimum cost flow problem.
Принятое предложение http://stackoverflow.com/a/19963452 также совпадает с одним из решений задачи максимального потока минимальной стоимости.

Вот реализация решения такой задачи на Java:
https://archive.is/20130124171045/sites.google.com/site/indy256/algo/min_cost_flow

Ты можешь как-то уточнить, что это именно то что от тебя хотят?
No. 16399    
>>16394
Там не все так просто. Там алгоритм немного другой. А точнее измененный.
>>16395
Нет, именно минимальный поток. Алгоритм его поиска есть в "кофман - введение в прикладную комбинаторику" на 370 страничке, если меня не подводит память.
No. 16400    
>>16399
Вот сама функция которая ищет максимальный поток.
vs -vertex set и es edge set соответственно.
https://hastebin.com/nisaveciqo.js
No. 16413    
>>16399
>>16400

Давай попробуем сравнить два алгоритма по твоей книжке (максимальный и минимальный) и то что делает жаваскрипт.

Первый шаг в поиске максимального потока: найти любой поток, удовлетворяющий ряду условий. Можно взять нулевой поток.
Первый шаг в поиске минимального потока: найти любой поток, удовлетворяющий другому ряду условий. В частности, для всех дуг на пути поток через них должен быть >= их емкости.
Что делает жаваскрипт? Насколько я понимаю, он берет именно нулевой.
No. 16414    
>>16399
>>16400
>>16413

Второй шаг в поиске максимального потока: найти полный поток. Для этого искать пути, все дуги в которых не насыщены, и увеличивать поток через них до насыщения хотя бы одной. Повторять пока не останется путей со всеми ненасыщенными дугами.
Второй шаг в поиске минимального потока: найти полный поток. Для этого "уменьшать поток, идущий через дуги от входа к выходу". Очень непонятный шаг, к которому не то что бы давали какие-то объяснения.
Что делает жаваскирипт? Он начинает искать пути с ненасыщенными дугами и по ходу дела помечает пройденные вершины. Это инициируется в мейн лупе, вызовом:

  while (path = findAugmentingP(rG)) {
    augment(path, rG);
    logState(rG, path);
  }

findAugmentingP(rG)
- это и есть поиск пути с ненасыщенными дугами. Эта функция ищет ненасыщенные пути, и заодно помечает пройденные вершины. Как только она находит "ненасыщенный" путь, мы переходим в тело цикла и жаваскрипт сразу пытается насытить в таком пути хотя бы одну дугу, вот в этой функции:
augment(path, rG)

Тут жаваскрипт проходит все дуги, смотрит сколько у них осталось емкости до насыщения, и выбирает минимальную остаточную емкость:

var b = bottleneck(path.slice(0), rG);

Потом он просто повышает поток на всём пути на это значение, чтобы насытить дугу:

    path.forEach(function(v) {
      if (u === v) {return;}
      ...
      fEdge.flow += b;
      bEdge.flow -= b;

      u = v;
    });

И так до тех пор пока таких путей не останется.
No. 16415    
>>16399
>>16400
>>16414

Третий шаг в поиске максимального потока: собственно найти максимальный поток. Для этого помечаем + все вершины, у которых есть ненасыщенные дуги и - все вершины у которых есть дуги с ненулевым потоком. Если в этот список попадает и выход, то находим путь до него, в котором все вершины помечены и увеличиваем там поток на некоторое вычисляемое значение. Повторяем этот шаг заново, пока выход попадает в список помеченных вершин.
Третий шаг в поиске минимального потока: собственно найти минимальный поток. Для этого помечаем + все вершины, у которых есть дуги с потоком, превышающим емкость и - все остальные вершины на пути. Если в этот список попадает и выход, то находим путь до него, в котором все вершины помечениы и уменьшаем поток через него на неуказанное значение. Повторяем этот шаг заново, пока выход попадает в список помеченных вершин.
Что делает жаваскрипт? У жаваскрипта третий шаг скомбинирован со вторым. Также в коде для этого выполнена оптимизация.
Обрати внимание на эти строчки и комментарии:

      // Consider edges which have nonzero residual flow.
      var es = rG.get(u).filter(function(e){return e.flow>0;});
      ...
      // return the min residual capacity of any edge on the path.
      ...
      if (edge.flow < min) {min = edge.flow;}

Т.е. автор кода говорит, что во flow он держит не просто поток через дугу, а конкретно остаточный поток. Т.е. то, что осталось "добить" до насыщения дуги.

Вот в этом куске, упомянутом в шаге 2 он повышает поток на дуге до насыщения, по правилам описанным в шаге 3:

    path.forEach(function(v) {
      ...
      fEdge.flow += b;
      bEdge.flow -= b;
      ...
    });

No. 16416    
>>16399
>>16400
>>16415

Основная проблема с поиском минимального потока в том, что он плохо описан в книге.
Это французская книга 68го года, переведенная на русек в 75м году. И либо автор что-то не дописал, либо переводчики нормально не перевели то что сами не поняли. Даже пример на поиск минимального потока расписан гораздо менее детально, чем пример для поиска максимального. Вместо нормального объяснения постоянные отсылки к плохо определенным правилам и "легко увидеть, что".

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


var rG = initResidual(vs,es)
...
  function initResidual(vs,es) {
    var g = d3.map(),
        outgoing,
        incoming;

    vs.forEach(function(v) {
      g.set(v.id, []);
    });

    es.forEach(function(e) {
      var bEdge = {target: e.target.id, flow: e.capacity};
      var fEdge = {target: e.source.id, flow: 0};

      outgoing = g.get(e.source.id) || [];
      outgoing.push(bEdge);

      incoming = g.get(e.target.id) || [];
      incoming.push(fEdge);

      g.set(e.source.id, outgoing);
      g.set(e.target.id, incoming);
    });

    return g;
  }


В частности, как инициализируются дуги:

      var bEdge = {target: e.target.id, flow: e.capacity};
      var fEdge = {target: e.source.id, flow: 0};

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

Надо ли это как-то адаптировать к поиску минимального потока - не очень понятно. Еще надо понять, что ж нам надо-то с дугами делать.
No. 16417    
Файл: 149531843428.jpg-(28.14KB, 640×480, azumanga15007.jpg)
16417
>>16399
>>16400
>>16416

Дальше только тупые предположения.

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

Если теперь нам надо помечать перенасыщенные вершины, а не вершины с ненулевым потоком, то возможно условие
var es = rG.get(u).filter(function(e){return e.flow>0;});

Надо заменить на
var es = rG.get(u).filter(function(e){return e.flow<0;});


Если все дуги изначально перенасыщены, то возможно, что нам надо снижать поток через них до их ёмкости. Т.е. вместо

    min = parseFloat('Infinity');
    ...
    if (edge.flow < min) {min = edge.flow;}
    ...
    return min;

Написать

    max = parseFloat('-Infinity');
    ...
    if (edge.flow > max) {max = edge.flow;}
    ...
    return max;

А вот это

    es.forEach(function(l) {
      var edge = rG.get(l.target.id).filter(function(e) { return e.target === l.source.id})[0];
      l.flow = edge.flow;
    });

    // Display the max flow
    var sinkIncedent = rG.get(1);
    var total = 0;
    sinkIncedent.forEach(function (e) {
      total += e.flow;
    });

Заменить на

    var total = 0;
    es.forEach(function(l) {
      var edge = rG.get(l.target.id).filter(function(e) { return e.target === l.source.id})[0];
      l.flow = l.capacity + edge.flow;
      if(l.target.id === 1) {
          total += l.capacity;
      }
    });

    // Display the max flow
    var sinkIncedent = rG.get(1);
    sinkIncedent.forEach(function (e) {
      total += e.flow;
    });


Но я крайне сомневаюсь что оно так будет работать.
No. 16420    
Попробую еще тут спросить.
>Ни кто не сталкивался с таким? Использую в приложении chromium web view версии 58.0 на Android 6. Загружаю в него локальную страницу с формой, скриптом на js и рекапчей. В рандомный момент (иногда сразу иногда через пару часов работы приложения) после загрузки страницы перестают работать кнопки (input) и не нажимается галочка на рекапче. При этом нет никаких сообщений в logcat и консоли JavaScript. Обновление страницы или повторная загрузка не помогают. Пересоздание webview тоже не помогает. Баг исчезает только после полного перезапуска приложения.
No. 16421    
Как на MySQL написать оракловскую конструкцию
datetime_column >= trunc(add_months(current_date,-1),'mm')

and datetime_column < trunc(add_months(current_date,2),'mm')

No. 16422    
>>16421
Если перекладывать её дословно, то можно вот так:

datetime_column >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), 2, MONTH)), 1, DAY)
datetime_column < DATE_ADD(LAST_DAY(DATE_ADD(NOW(), 1, MONTH)), 1, DAY)

Как видишь, поскольку в MySQL проще получить последний день месяца, чем первый, то делается слегка наоборот.
No. 16423    
>>16422
Послал тебе лучей бобра, завтра попробую. А то у меня нет нормального доступа к базе, только лагучая приблуда на java.
No. 16424    
>>16420
Я бы посоветовал обмазаться дебагом сильнее. Повесь на все возможные рабочие события коллбеки, который будут плеваться в console.log, банально по всяким тач-ивентам, клик-ивентам и т.д. И потом включай удаленный дебаг по кабелю и смотри что происходит когда приложение "подвисло" - дергаются ли вообще события эти или нет, ну и всякое такое. На основании этого можно будет уже дальше дебажить. Ибо webview в целом (и ведра в особенности) это боль и там вагон и тележка потенциальных проблем может быть.
No. 16425    
>>16424
Нашел ошибку. Проблема была в том что при уничтожении activity таймеры webview ставились на паузу методом pauseTimers, а при создании activity нужно было вызывать resumeTimers, а в коде этого не было.
No. 16429    
Файл: 14957024976.jpg-(79.41KB, 500×457, 1303722822324.jpg)
16429
Лолнуб вкатывается в нить.
Очень сильно хочется качать мангу вот прямо роботом, а не руками. Пытался подружиться с wget, но не совладал с ним. Испытал множество острых ощущений, ну вы понимаете.
Итак, идея: качаем страницу галереи по введёной пользователем ссылке (к примеру, https://здесьбылсайт.net/g/187778/), выделяем из исходного текста страницы ссылку (одну, там прямых ссылок на полноразмерные картинки со страницы нет и цифры в адресе страницы и адресах картинок не совпадают) типа <meta itemprop="image" content="https://t.здесьбылсайт.net/galleries/1029160/cover.jpg">;, удаляем лишнее до получения ссылки вида https://t.здесьбылсайт.net/galleries/1029160/.jpg. Заменяем https://t на https://i, на месте подставляем последовательные числа от единицы до, к примеру, пяти тысяч, передаём полученный список адресов на wget с задержкой между загрузками 10-15 секунд, заканчиваем работу скрипта при первом получении 404.
Проблема в том, что я хтонический чайник и не умею в скрипты. Автобус, сделай из меня нечайника а лучше набросай этот проклятый скрипт за меня.
No. 16430    
Файл: 149570268271.jpg-(67.83KB, 500×446, Nyoro~n.jpg)
16430
И в разметку тоже не умею.
No. 16431    
>>16429
А просто ограничить область вгету и запустить рекурсивно уже от https://t.здесьбылсайт.net/galleries/1029160/cover.jpg не прокатит?
No. 16442    
>>16429
Я бы рекомендовал делать это не прямо баш скриптом, а каким-нибудь приблудой с headless браузером, например СasperJS. Тогда ты просто будешь ходить по этому сайту, почти как обычно, программно кликая по штатным элементам навигации, и сохраняя полноразмерные картинки. Только юзер агент не забудь проставить Не хочешь так попробовать?
No. 16447    
Файл: 149606780837.png-(45.62KB, 850×529, face.png)
16447
Как быстро и безболезненно сделать такой интерфейс на С++ под линукс? Весь мой опыт графики это вывод графиков в питонах-матлабах и у OpenCV есть свой минималистичный набор - картинка и трэкбары сверху, а тут препод уперся что можешь писать под своими прыщами, но без гуя никак.
No. 16448    
>>16447
Qt?
No. 16449    
>>16448
Слышал про Qt и Gtk, но они выглядят слишком сложно для моей задачи. Идеально подошел бы какой-то конструктор с минимум украшательств и кастомизации. Или годный туториал с примерами, покрывающими нарисованные 3.5 элемента и работу с OpenCV.
No. 16450    
>>16449
Скачивай Qt Creator и делай. Твою форму там 15 минут набросать максимум.
No. 16451    
>>16447
Если тебе нужно под X, без лишней дребедени, то подключай и пользуй Xlib: https://en.wikipedia.org/wiki/Xlib
No. 16452    
>>16450
Пытаюсь в Qt. Сейчас у меня выводятся фреймы таким образом
MainWindow w;
CVImageWidget* imageWidget = new CVImageWidget(); // библиотечный виджет для OpenCV
w.setCentralWidget(imageWidget);
imageWidget->showImage(frame); // frame это cv::Mat кадр обрабатываемого видео
Проблема в том, что что бы я не набросал в mainwindow.ui, выводится только видео без интерфейса, полагаю, это потому что w.setCentralWidget(imageWidget);
Вопрос, как сделать так чтобы видео выводилось только в виджете, который большое поле справа на картинке? Допустим, это у меня QObject, который QWidget, у которого objectName = cvframe
>>16451
Спасибо, на очереди если не взлетит быстро разобраться с Qt.
No. 16460    
>>16417
Наверно очень поздно, но я сам все написал таки. Использовал такой алгоритм:
1. Составляем поток, который для каждой дуги >= пропускной способности.
2. Получаем новые пропускные способности, вычитая из нашего нового потока старые пропускные способности.
3. Ищем в новой тс максимальный поток любым способом.
4. Вычитаем из самого первого "увеличенного" потока найденный в прошлом пункте максимальный и получаем искомый минимальный поток.

Еще раз извиняюсь за то, что ответил так поздно, просто сделал, сдал, и забыл. Чуть позже могу скинуть ссылку на работающий код.
No. 16464    
>>16460
Конечно давай ссылку, поместим в базу знаний.
No. 16478    
Файл: 14967745474.png-(94.37KB, 500×700, pmv0xuxkx82y.png)
16478
Подскажите, пожалуйста, как сделать так, что бы эта фигня заработала также для остальных браузеров, а не только для вебкита:

display: grid;
grid-template-columns: repeat(auto-fill, 200px);
grid-gap: 10px;
grid-auto-rows: minmax(100px, auto);

Спасибо.
No. 16479    
>>16478
По-идее у тебя нет вариантов.

CSS grid имеет проблемы даже в свежих версиях Firefox. В IE/Edge пока вообще без вариантов. А еще без вариантов с кучей зоопарка на мобилках (как минимум, стоковый Android браузер, который не-Chrome, и поделки на его основе). Нормальных полифилов для старого говна, вроде как, так и не осилили сделать.

Альтернатива для тебя это всякие CSS бойлерплейты с сеткой, но они все в той или иной мере днище, которое для настоящего CSS Grid не дотягивают. Поэтому либо страдай и подбирай вариант бойлерплейта, либо отказывайся от затеи и верстай ручками требуемое добро, а через пару лет уже сможешь делать все уже как белый человек.
No. 16480    
Файл: 14967848546.png-(74.97KB, 500×810, this-was-a-great-idca-tiling-pixel-gif-repeatedly-.png)
16480
>>16479
Требуемое добро у меня динамично.
Сделаю редирект по юзер агенту :3
No. 16557    
Я правильно понимаю, что с голым Пайтон податься некуда?
No. 16558    
>>16557
Осторожно предположу, что с голым пайтоном можно вполне себе попасть на джуниорскую позицию. Но опять же, даже если требуют понимание какого-то фреймворка, то на начальную позицию хватит знаний полученных во время прохождения туториала по данному фреймворку с возможным штудированием материалов типа 100 вопросов по фреймворку Х на собеседования обычно ничего сильно больше не требуется. Например, ты можешь пройти туториал по популярному у питонистов Django
No. 16563    
Файл: 149778409350.jpg-(134.49KB, 768×512, Python18-768x512.jpg)
16563
Есть такой небольшой код: https://pastebin.com/r3YNJSWP
Можно ли как-нибудь обойти РКН, да так, чтобы скрипт работал и в винде и на линуксе?
No. 16565    
>>16563
Ты хочешь скрипт, который сам подключается к прокси или VPN из списка. Соответственно, тебе надо найти прокси, или VPN, которыми ты можешь воспользоваться, или ресурс-анонимайзер с api, который сможет сделать доставку веб-контента для тебя. После чего написать код который будет с этим всем работать. Если ты хочешь это для личного пользования, то тебе проще арендовать небольшой сервер и устроить себе проксирование / vpn через него

Прокси ты можешь передать параметром proxies в своём requests.get():
http://www.python-requests.org/en/latest/user/advanced/#proxies

К VPN эксклюзивно для скрипта подключиться не получится, придётся дергать установленный предварительно OpenVPN и подключаться через него.

Если ты не боишься утечки информации в третьи руки, или делаешь всё в спортивных целях, то можешь переиначить под свои нужды вот это https://gist.github.com/Lazza/bbc15561b65c16db8ca8 тут работают с апи впн гейт, выбирают сервер и подключаются к нему через OpenVPN а для прокси взять библиотеку которая граббит рабочие прокси с какого-то ресурса, например ProxyBroker: https://github.com/constverum/ProxyBroker#basic-code-example (требует питон 3.5)

С прокси в таком случае получается всё достаточно просто - заводишь поиск прокси, и как только рабочий / подходящий прокси найден - грузишь через него свою страницу.
No. 16569    
>>16565
Спасибо большое!
No. 16571    
>>16569
Рады помочь
No. 16572    
Файл: 149786444868.jpg-(20.13KB, 599×337, Kyon32.jpg)
16572
Аноним заметил, что прошлую нить таки отправили архив и обновил ссылки в базе знаний
No. 16574    
>>16565>>16563
А можно просто настроить прокси с antizapret.prostovpn.org
No. 16575    
>>16574
А можно обеспокоиться информированностью российского васяна тем, куда ты ходишь и что смотришь по http и использовать другие прокси.
No. 16577    
>>16575
Можно и в интернет не с РФ выходить.
А для данного ТЗ решение проще некуда. Тем более что первый ответ тоже предлагает вариант с
>Если ты не боишься утечки информации в третьи руки
No. 16578    
>>16577
Утечка в любом случае возможна. Вопрос в чьи руки. К тому же на антизапрете решения для браузеров/впн, а запрашивалось для скрипта.
No. 16580    
>>16578
>Вопрос в чьи руки.
Во-первых, у опенВПН тоже есть русские ноды. Во-вторых, в случае с антизапретом, трафик на не заблоченные ресурсы вообще идёт напрямую.
>К тому же на антизапрете решения для браузеров/впн, а запрашивалось для скрипта.
http://lmgtfy.com/?q=python pac
No. 16581    
>>16580
>у опенВПН тоже есть русские ноды
И что?
>трафик на не заблоченные ресурсы вообще идёт напрямую
Где я про них хоть слово сказал? Раз уж ты поднял тему - ничто не мешает запихнуть в pac незаблоченый ресурс.
>http://lmgtfy.com/?q=python pac
Так это ты не мне, а автору вопроса предлагай. Алсо pac для запросов на один домен - оверкил.
No. 16583    
>>16581
>Раз уж ты поднял тему - ничто не мешает запихнуть в pac незаблоченый ресурс.
>Алсо pac для запросов на один домен - оверкил.
Ну тогда пусть >>16563 и использует только как проксю и без PAC, если он собирается только на данбуру ходить. Довод про незаблоченные ресурсы отпадает.
>Так это ты не мне, а автору вопроса предлагай
Я предложил. А возникать начал уже не он.
Пусть сам и решает тогда.
</discussion>
No. 16584    
>>16580
>>16581

>Чтобы не сбивать новичков с толку, а также не разбавлять полезную информацию мусором, беспредметные споры типа "какой язык / парадигма / библиотека / етц лучше" здесь запрещены.
No. 16586    
>>16583
Так его вопрос был как, а не какую.
No. 16589    
Файл: 149789982511.jpg-(69.21KB, 677×451, strashnaya-istoriya-kotoraya-tolkaet-nas-k-neozhid.jpg)
16589
Ребят, я >>16563-кун.
Во-первых, >>16565, ещё раз спасибо. vpngate.py не подошёл, так как на винде нет предустановленного OpenVPN. С ПроксиБрокером возникла какая-то проблема, а мне её лень было решать хотя я пытался, честно. Но я выбрал путь прокси.
Во-вторых, >>16574-кун, ты мне тоже помог, тебе тоже спасибо. Я сначала написал вот такую фигулину: https://pastebin.com/UP97DW0z , но сейчас, прочитав нить, понял, что можно было юзать pypac я ведь всё верно понял?
Для меня остались непонятны следующие вещи: почему pac для запросов на один домен - это оверкил и что вообще такое оверкил
No. 16591    
>>16589
>что вообще такое оверкил
Обычно под оверкиллом в программировании имеют в виду использование очень широкого инструментария для решения маленькой задачи.

Вот например, PAC:
>A proxy auto-config (PAC) file defines how web browsers and other user agents can automatically choose the appropriate proxy server (access method) for fetching a given URL.

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

>PyPAC is a pure-Python library for finding proxy auto-config (PAC) files and making HTTP requests that respect them. PAC files are often used in organizations that need fine-grained and centralized control of proxy settings.

Что для твоей задачи достать картинки с данборы вроде бы и оверкилл, потому что тебе не то что бы даже файл для хранения прокси был нужен. But hey, если это удобно, то почему бы не пользоваться?
No. 16593    
>>16591
А если, к примеру, мне захочется расширить приложение в будущем, добавить ещё несколько буруподобных сайтов, то использование очень большого инструментария того же самого PAC в настоящий момент то есть когда я использую PAC только лишь для гелбуры будет являться оверкиллом?
No. 16594    
>>16593
>добавить ещё несколько буруподобных сайтов
С учётом того, что они практически все забанены в рф - пожалуй подразумевая, что ты используешь антизапретовский рас. На деле пока у тебя не хайлоад можно извращаться как угодно.
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]

Удалить сообщение []
Пароль  
[Mod]