• Как реализовать дешифровку шифр частоколу?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я ничего не понял. Рекомендую ознакомиться с этим документом: maddog.sitengine.ru/smart-question-ru.html
    Ответ написан
    2 комментария
  • Обфускация фронтенда. Как спрятать javascript логику от большинства?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Тупиковая идея, которая усложнит жизнь как вам, так и тому кто вздумает (вдруг) ваш код использовать. Именно усложнит, но ни разу не исключит.
    Пропустите через обычный минификатор, который во время укорачивания локальных переменных немного обфусцирует код, и добавьте лицензию, чтобы в случае конфликта у вас были аргументы.
    А так ничего больше не сделаете, если шифровать - то дешифровывать всё равно придется, а значит можно будет получить код в любом случае.
    Ответ написан
    2 комментария
  • Настройка поиска часто изменяющихся данных в Sphinx?

    @impass
    в силу некоторых причин я пока не могу использовать для задачи RT-индексы — не получится быстро переделать приложение так, чтобы наряду с выполнением запросов к mysql он их отправлял в sphinx

    теоретически можно просто сделать триггер на обновление таблиц(ы) + подцепить сервер Sphinx'а через FEDERATED storage engine
    Ответ написан
    Комментировать
  • Настройка поиска часто изменяющихся данных в Sphinx?

    opium
    @opium
    Просто люблю качественно работать
    Что такое у вас изменившиеся данные, если вы изменили вчерашние данные то конечно дельта индекс не учтет их либо их надо как то по особому менять, то есть делать новое объявление.
    Ответ написан
    7 комментариев
  • django Создание SQL запроса через ORM с не явными связми, возможно ли?

    cachealot
    @cachealot Автор вопроса
    Пока писал вопрос в Q&A разобрался в ORM.

    Конкретно в моем случае запрос можно переписать c JOIN на WHERE:

    SELECT * FROM pybb_forum as ff,guardian_groupobjectpermission as gg, auth_permission as pp 
         WHERE codename = 'view_forum'      
         AND gg.group_id in (1,2,3)     
         AND gg.content_type_id = 9 
         AND  ff.id = gg.object_pk 
         AND gg.permission_id = pp.id;
    


    a WHERE уже довольно просто подставить в objects.extra:

    Forum.objects.extra(
        tables = ['guardian_groupobjectpermission', 'auth_permission'],
        where = [""" codename = "view_forum"
        AND guardian_groupobjectpermission.group_id in (1,2,3)
        AND guardian_groupobjectpermission.content_type_id = 9
        AND pybb_forum.id = guardian_groupobjectpermission.object_pk
        AND guardian_groupobjectpermission.permission_id = auth_permission.id
        """]
    )
    


    Единственная проблема — совсем пропала читабельность такого запроса.
    Ответ написан
    Комментировать
  • Странный спам. Что бы это значило?

    Фокс Йовович снова жив? ))
    Ответ написан
    Комментировать
  • Не запускается PhpStorm на archlinux

    Sky4eg
    @Sky4eg Автор вопроса
    Web разработчик
    Проблеима в видеодрайвере. Nvidia 319. Откатился на 304 и все заработало!
    Ответ написан
    Комментировать
  • Вопрос к Ruby девелоперам: за что Вы любите Ruby?

    @Renius
    дурак восторженный
    За то, что, код можно прочитать в слух, и код от этого не потеряет ясность.
    За то, что англо-русский словарь нужен для именования переменных
    За то, что именование переменных и выбор общего алгоритма — едиснтвенное о чем приходится думать.
    За то, что при программировании на Ruby 99% уходит на проектирование поведения, и 1% на программирование
    За то, что по первой строке ошибки можно определить где и в чем ошибка
    За то, что интеграционные тесты можно писать на русском, от чего заказчик обливается слезами умиления и расстается с деньгами
    За то, что вызывает ООП головного мозга
    За то, что технилогический уровень, и технологическое качество на голову выше программы ВУЗ-ов
    За то, что высокий порг вхождения по IQ на нет сокращает количество быдлокодеров
    За то, что разработка вызывает просто животный восторг граничащий с оргазмом
    За то, что разработкой в кайф реально можно заниматься по 16 часов в сутки и не сломать себе мозг
    За то, что на форуме тебе не скажут: лол ты нуб иди читай маны днище!!111адинадин
    За то, что, возможно, ваше изящное решение еще никто не использовал
    мне на работу пора, а так я могу очень долго писать
    Ответ написан
    2 комментария
  • Площадка для покупки китайского планшета?

    Urvin
    @Urvin
    На пандавилле в секции «Brands» подбираете, на алиэкспрессе покупаете на $20 дешевле.
    Ответ написан
    1 комментарий
  • Оживить SSD

    @Nikolay45
    Вообще то Вы счастливый обладатель «правильно» умершего SSD. При достижении критического износа ячеек NAND Flash контроллер переходит в режим Read Only для возможности спасти данные. Обратного пути нет. У меня на руках более 20-ти SSD и три из них умерли «не так как надо», т.е. вообще не определялись. Теперь знаю, что есть и «правильные».
    Ответ написан
    Комментировать
  • С чего начать изучение C++?

    @gribozavr
    Ответ написан
    Комментировать
  • На чём лучше писать большого демона?

    TyShkan
    @TyShkan
    Рекомендую посмотреть в сторону phpdaemon
    Ответ написан
    Комментировать
  • MongoDB: выборка последних значений

    В общем, при такой структуре:

    {
    	"_id" : 3,
    	"info" : [
    		{
    			"k" : "c",
    			"v" : 353
    		},
    		{
    			"k" : "e",
    			"v" : 113
    		}
    	]
    }
    


    Вот решение:

    db.test.drop();
    db.test.insert({
      "_id": 1,
      "info": [{"k": "c", "v": 768}, {"k": "d", "v": 345}]
    });
    db.test.insert({
      "_id": 2,
      "info": [{"k": "e", "v": 333}]
    });
    db.test.insert({
      "_id": 3,
      "info": [{"k": "c", "v": 353}, {"k": "e", "v": 113}]
    });
    db.test.find().forEach(printjson);
    
    var res = db.test.aggregate([
      {$sort: {
        "_id": 1
      }},
      {$unwind: "$info"},
      {$group: {
        "_id": "$info.k",
        "v": {$last: "$info.v"}
      }}
    ]);
    
    printjson(res);
    


    Вот результат выполнения aggregation:

    {
    	"result" : [
    		{
    			"_id" : "e",
    			"v" : 113
    		},
    		{
    			"_id" : "d",
    			"v" : 345
    		},
    		{
    			"_id" : "c",
    			"v" : 353
    		}
    	],
    	"ok" : 1
    }
    
    Ответ написан
    2 комментария
  • Что использовать в качестве идентификатора российского города?

    alrond
    @alrond
    Я бы посоветовал использовать классификацию ООН UN/LOCODE:
    www.unece.org/cefact/codesfortrade/codes_index.html
    Город имеет 3 буквенный код + два символа на страну, однозначно указывают на конкретный город, есть даже мелкие.
    Примеры:
    RU MOW Moskva Moskva AI 12345--- 9601
    RU LSS Lesosibirsk Lesosibirsk KYA --3----- RQ 1001 5817N 09222E
    RU GDX Magadan Magadan ---4---- AI 0001
    Как бонус все города мира:
    DE LPM Laupheim Laupheim BW -234---- AF 9501
    CN XSN Xiangshan Xiangshan 33 --3--6-- RL 0401 2916N 12000E
    Ответ написан
    Комментировать
  • PHP и Gearman, что и как?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    — этот вопрос вытекает из предыдущего: понятно дело, когда клиент — демон, он поставил задание и просто ждет результата, или регулярно опрашивает Gearman на предмет результата…

    Я делаю «в лоб» — как только задачи определенной группы начали выполняться, я делаю инкремент одной переменной в БД, как только задача завершается — делаю декремент. В итоге, когда хоть какие-то задачи выпоняются — переменная отлична от 0, как готовы все — там 0. Из веб-приложения аяксом просто опрашиваю БД
    Ответ написан
    Комментировать
  • PHP и Gearman, что и как?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Доброго :)
    Отвечаю на вопросы

    — чем концептуально отличается GearmanJob от GearmanTask и какой из них следует использовать для оформления отложенного задания?

    Job — это то, что поступает воркеру.
    Task — это то, что передает клиент

    То есть клиент кидает Task на сервер очередей, там два агрумента — имя ф-и и сериализованные данные (в виде строки).
    Если у воркера есть ф-я, указанная в Task, то есть он готов ее обработать, то он принимает задачу, а данные получает в виде Job.
    Извлекаются данные вот так (кусок реального кода):

    function create_campaign(GearmanJob $job){

    $rawData = $job->workload();
    $data = unserialize($rawData);


    А передаются на сервер вот так (я использую не Task, а чуть проще — просто doBackground)

    $gclient = new GearmanClient();
    $gclient->addServer('localhost');

    $new_offers = $client_db->select_new_offers();

    if(is_array($new_offers) AND count($new_offers) > 0){
    foreach($new_offers as $item){
    $data_for_gearman = array(
    'item' => $item,
    'client_class_name' => 'axxa',
    );
    $gclient->doBackground('new_offer', serialize($data_for_gearman));
    }
    }

    echo «Для добавления товаров на сервер очередей добавлено ».count($new_offers)." задач \n";
    Ответ написан
    1 комментарий
  • Стоит ли покупать Google Nexus 7?

    @rdin
    Пишу с Nexus 7 — отличная вещь. Нужен ли 3G — дело каждого, вот мне не нужен. Wi-Fi есть практически везде и мне редко нужен планшет с интернетом на улице, тем более выручает смартфон. В крайнем случае с того же смартфона раздаю интернет при небходимости, да и платишь один раз.
    Читаю на нем много, в том числе PDF — удобно, хотя есть елинк-читалка.
    RSS читаю в оффлайне.
    16 ГБ более чем лично для меня — музыку не слушаю на планшете, а фильмов 5-10 влезет спокойно.
    Попробуйте понять, всегда ли нуж
    Ответ написан
    1 комментарий
  • Распараллелить работу части скрипта?

    Urvin
    @Urvin
    2. pcntl_signal даст сигнал об окончании работы дочернего процесса.
    Когда работал с этими функциями долго не мог врубиться в совершенно теские вещи. Работа идет примерно так:
    а) Вешаем обработчик pcntl_signal. Это сигнал об окончании какого-то из процессов.
    б) Циклично форкаемся, предварительно записывая в некую переменную номер пакета данных. По справке определяем — копия/не копия.
    в) если копия, posix_setsid, деаем нужный код или через pcntl_exec замещаем себя обработчиком пакета.
    В этом месте обработчик пакета принимает возвращенные сторонним сервисом данные и как-либо их обрабатывает.
    г) По завершении работы дочернего процесса мы знаем его PID и, соответвенно, знаем индекс обработанного пакет.

    3. ps x и читаем вывод. Знаем PID и прочие атрибуты процессов. Но некошерно.
    Ответ написан
    3 комментария
  • Какое приложение для android написать?

    alexxxst
    @alexxxst
    Возьмите какой-нибудь свой/чужой онлайн-проект и сделайте к нему клиент.
    Я так сделал с spchat.ru, мне понравилось :)
    Ответ написан
    Комментировать
  • Откуда эта база паролей?

    ekungurov
    @ekungurov
    Даже у самых стойких, типа «5tgb7ujm6tfc»

    Весьма наивно считать такой пароль стойким, ведь он образован определенным паттерном на клавиатуре.
    Ответ написан
    Комментировать