• Как можно получить последовательность стандартных функций, которые вызываются в скрипте?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Есть такая тема, Chrome Profiles:
    3bb00706712d41ab9e91dc12d2adbb92.png
    Не совсем точно подходит под ваш запрос, но кое что вытянуть из него можно. Поищите в инете есть туториалы, чтобы начать работать с этим очень полезным инструментом.
    Ответ написан
    Комментировать
  • Как продвинуть математический сайт?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    А дайте ссылочку, глянуть? Просто интересно.
    Ответ написан
  • Как на angular 2 создать приложение для windows десктоп?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Есть вариант для windows делать не .exe, а просто html. Называется HTA. Тоже, что и html, только в контексте безопасности локальной машины. Работает только под IE, но зато не надо встраивать браузер. Делаете всё как для обычного сайта, только расширение исходного файла делаете не *.htm/html, а *.hta. Если у вас есть уже готовая страница html с angular - попробуйте.
    Ответ написан
    Комментировать
  • Как массово удалить символьные иконки (➨,+,★,♥ и т.д.) из имени файла?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Я как-то решал подобную задачу и столкнулся с проблемой, что после переименования могут произойти конфликты, когда имена разных файлов после удаления некоторых символов могут совпасть. В этом случае я делал в excel таблицу исходных имён файлов, переименовывал их в соседний столбец и проверял, что не появились дубликаты (если появлялись, то можно было прямо в excel написать какое должно быть новое имя). Когда добивался нужного результата с отсутствием дубликатов, то на основе таблиц делал BAT-файл поименного переименования файлов. Такой подход гарантирует, что не будет дубликатов и все файлы будут с точно заданными именами и не нужно делать дубликат каталога с файлами (или архив), т.к. размеры таких каталогов могут быть гигантскими и по количеству и по объёму файлов.
    Думаю, что нужно не сразу в лоб переименовывать файлы в каталоге/каталогах а проверять, что после переименования не появится дубликатов. Регулярки, конечно, подойдут, но результат надо проанализировать заранее.
    Ответ написан
    2 комментария
  • Чем отличается REST от AJAX?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Некоторые вещи неуместно сравнивать. Просто каждая технология решает свои задачи и потому они нужны, чтобы дополнять друг друга, а не противостоять друг другу. Также не стоит верить собеседнику в его оценочных суждениях и соглашаться, что нужно искать какие-то различия. Например они отличаются тем, что в названии у них нет одинаковых букв, но одинаковы в том, что оба названия имеют в длину 4 буквы и оба являются сокращением.

    В общем, не расстраивайтесь, что не срослось. Лучше искать тех людей, которые несмотря на ваше незнание какой-то технологии смогут разглядеть, что вы можете и увидеть в вас потенциал (наверняка он в вас есть). Тем более, что ни AJAX ни REST не существует, все они части одного целого. Как материки на одной планете.
    Ответ написан
    7 комментариев
  • Можно ли восстановить document.domain?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Если вы разработчик этих доменов, то вы можете отменить CORS для них. Например, как это делается на php:

    https://ru.wikipedia.org/wiki/Cross-origin_resourc...

    <?php
        header("Access-Control-Allow-Origin: http://example.com");
    ?>


    т.е. суть просто в заголовке. Не браузер запрещает кросс-доменные запросы, а сервер может не разрешать делать запросы к себе от другого домена и по-умолчанию домены не выставляют этот параметр. Но если домены ваши, то вы можете выставить им взаимные разрешения читать друг у друга.
    Ответ написан
  • JS Как оптимизировать поиск объекта в массиве?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Внесу свои пять копеек, вдруг пригодиться: https://github.com/jayway/JsonPath
    Типа xPath, только для json.
    Ответ написан
    Комментировать
  • Часто ли вы используете интерфейсы?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    У каждого своё понимание интерфейса и в зависимости от этого и пишутся программы с использованием тех или иных шаблонов. Обычно для задачи выбирается стек технологий и если выбран удачно, то программа будет жить долго и счастливо. Ну, а если нет, то... не повезло.
    Ответ написан
    Комментировать
  • Как в JavaScript дотянуться до переменной?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    В принципе можно. Вот так, например:

    var get_myvar;
    var set_myvar;
    window.map.on('draw:created', function (e) {
        var type = e.layerType,
            layer = e.layer;
    
        if (type === 'marker') {
            // Do marker specific actions
        }
    
         var myvar = "foo"; // вот переменная
         get_myvar = function(){
             return myvar;
         }
         set_myvar = function(val){
             myvar = val;
         }
    });
    console.log( "myvar="+ get_myvar() );
    set_myvar("new_value");
    console.log( "myvar="+ get_myvar() );
    Ответ написан
    Комментировать
  • Можно ли попросить Вас о code review?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    По мне так очень даже прилично написано, а у всех остальных свой опыт разработки. Лично мне не трудно было читать. Для удобства добавьте несколько скринов, чтобы было понятно о чём речь.
    Ответ написан
  • Как правильно обновлять ресурсы сайта?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Обычно надо править заголовки в отдаваемых ресурсах, чтобы ресурсы не проксировались.
    1. Для java, например выставляю:

    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
    response.setDateHeader("Expires", 0);

    обычно их бывает достаточно.

    2. можно трафик через nginx прогонять и выставлять эти заголовки и т.д.
    Ответ написан
  • Как просмотреть активность apache?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Для тестовых условий можно использовать Fiddler. Да, да. Я не оговорился. Именно fiddler. И именно для отладки на сервере. Только нужно немного поколдовать. Ставите перед apache реверс прокси (скорее всего это будет nginx), который будет перенаправлять запросы на fiddler, в fiddler разрешить доступ снаружи:

    10285392485b4bb1bda8df4daac02a4a.png

    , а в fiddler нужно перенаправлять redirect-ы на ваш сайт apache. (вот описание этого кодунства в fiddler). Теперь у вас все запросы к apache видны как на ладони со всем содержимым, куками, паролями и пр.

    Вкратце: пользователь делает запросы на nginx, nginx редиректит на ваш локальный комп с запущенным fiddler, fiddler редиректит на apache. Вы наблюдаете жизнь запросов к апачу вместе с трафиком вживую. Профит.
    Ответ написан
    Комментировать
  • Перебор древовидного объекта?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Честно говоря меня напрягают следующие вещи в вашем коде:

    1. options = options[ obj ]; // <--- WTF??? Это что за извращённый способ рекурсии?

    2. Цикл for ( var obj in options ) { без проверки владения:
    if( options.hasOwnProperty( obj ) ){
    ... бизнес-логика ...
    }

    3. Самое главное. КАК ПРОИЗВОДИТСЯ РЕКУРСИЯ??? (Видимо ошибка из п.1). Нигде внутри parse_args не производится вызов её самой!
    Конец бородатого анекдота: "Думай, Петька, думай"!
    Ответ написан
  • Как запустить Main-класс из Jar?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Попробуйте перед lib поставить точку (текущий каталог), а то, наверное, java не очень понимает где же всё-таки находится lib (ну и *.jar убрать):

    java -classpath application.jar;./lib;. org.company.application.Launcher
    Ответ написан
    Комментировать
  • C#, требуется отправить сырой HTTP(S) запрос?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Разобрался!
    Маленькая тонкость - сервером выступает ElasticSearch.

    Действительно, решение через
    new Socket()
    правильное. Но! Нужно ООООЧЕНЬ внимательно следить за тем, что пишется в заголовках, а особенно за заголовком "Content-Length: NNN":
    1. Обязательно его вставлять, даже если он не указан!
    2. Правильно считать длину тела запроса. Не по символам, а по байтам.

    Вот переработанный пример кода MS из совета Петр, который уже нормально заработал:

    private void btnRequest_Click(object _sender, EventArgs e)
            {
                /* Текстовое поле, из которого я беру текст вида:
    GET http://HOST:9200/_search HTTP/1.1
    Host: HOST:9200
    
    {
    ....
        "highlight" : {
            "fields" : {
                "*" : {}
    
            }
        }
    }
               */
                string str = request_text.Text; 
                byte[] bytes = new byte[100024];  // Примерное число, которое надо поменять, если требуется! Мне для экспериментов подошло. В дальнейшем можно будет сделать какой-нибудь ByteStream
    
                // Connect to a remote device.
                try
                {
                    string str_first = str.Split(new char[] { '\r', '\n' })[0];
                    string[] arr_str_first = str_first.Split(' ');
                    string[] arr_str_address = arr_str_first[1].Split('/');
                    Uri uri = (new Uri(arr_str_first[1]));
                    string new_str_first = arr_str_first[0] + " /" + arr_str_address.Last() + " " + arr_str_first[2];
    
                    // разделить запрос на две части - заголовки и тело:
                    string str_headers = str.Substring(str_first.Length + 2, str.IndexOf("\r\n\r\n") - str_first.Length - 2);
                    string str_body = str.Substring(str.IndexOf("\r\n\r\n") + 4);
    
                    int index_substring_content_length = str_headers.IndexOf("Content-Length:");
                    if (index_substring_content_length >= 0)
                    {
                        string tmp = str_headers.Substring(index_substring_content_length);
                        string[] arr_temp = tmp.Split(new char[] { '\r', '\n' });
                        string sub_string_content_length = arr_temp[0];
                        sub_string_content_length = "\r\n" + sub_string_content_length;
                        Regex regex = new Regex(sub_string_content_length);
                        str_headers = regex.Replace(str_headers, "", 1);
                    }
    
                    // Establish the remote endpoint for the socket.
                    IPHostEntry ipHostInfo = Dns.GetHostEntry(uri.Host);
                    IPAddress ipAddress = ipHostInfo.AddressList[0];
                    IPEndPoint remoteEP = new IPEndPoint(ipAddress, uri.Port);
    
                    // Create a TCP/IP  socket.
                    Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
                    // Connect the socket to the remote endpoint. Catch any errors.
                    try
                    {
                        sender.Connect(remoteEP);
    
                        Console.WriteLine("Socket connected to {0}", sender.RemoteEndPoint.ToString());
    
                        string raw_request = new_str_first+"\r\n"+str_headers+ "\r\nContent-Length: "+ Encoding.UTF8.GetBytes(str_body).Length+"\r\n\r\n"+str_body;
    
                        // Encode the data string into a byte array.
                        byte[] msg = Encoding.UTF8.GetBytes(raw_request); // + "<Client Quit>");
    
                        // Send the data through the socket.
                        int bytesSent = sender.Send(msg);
                        Console.WriteLine("bytesSent = {0}", bytesSent.ToString());
    
                        // Receive the response from the remote device.
                        int bytesRec = sender.Receive(bytes); 
                        Console.WriteLine("Echoed test = {0}", Encoding.UTF8.GetString(bytes, 0, bytesRec)); // bytesRec));
    
                        // Release the socket.
                        sender.Shutdown(SocketShutdown.Both);
                        sender.Close();
    
                    }
                    catch (ArgumentNullException ane)
                    {
                        Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
                    }
                    catch (SocketException se)
                    {
                        Console.WriteLine("SocketException : {0}", se.ToString());
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Unexpected exception : {0}", ex.ToString());
                    }
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }


    Вот результат, который было нужно получить в ответе от сервера:
    e9834dff7f9d4bfa849a2f10ae73a9a6.png

    Результат получен.

    P.S.
    Понял, почему не получалось с самого начала. Посмотрев, как Fiddler2 достаточно вольно обращается с синтаксисом запросов в разделе Composer, я и подумал, что и мне так можно. Но, скорее всего, в фоне Fiddler2 всё-таки перерабатывает запрос, стараясь максимально приблизить его к стандарту. Вот пример разницы того, что записано в Composer уменя и что показывает Inspector:

    cbe1feb2544f445e8b99fa03a5f306eb.png
    Ответ написан
  • Зачем нужен void initialize?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Обычно такие "штуки" делают не для "обычных" конструкторов объектов, а для сложных классов. Например, в C# initialize используются в конструкторах GUI-шных компонентов, если вы, например, их расширяете. В этом случае требуется установка многих значений по умолчанию, смысл которых иногда не ясен, да и пока не важен (особенно, когда нужно хоть как-то запустить для примера). Но если вы пишите свои собственные классы, то с вероятностью 99% вы напишите свой инициализатор и валидатор, если он вам вообще понадобится. Так что принципиальной разницы в листингах в вашем примере нет. Результат же получен одинаковый? Просто разными способами.
    Ответ написан
    Комментировать
  • Как посмотреть на сайте другой сайт?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Это вы самую суть проксирования уловили. )
    Но всё зависит от цели. Ну и инструменты тоже надо выбирать от цели. Для вашего прямого вопроса в лоб на все случаи жизни не существует "волшебной" строки на php для проксирования сайта. Да и вообще такой волшебной строки нет. Пишите подробнее, что хотите получить в результате.
    Ответ написан
    Комментировать
  • Bower обновляет не все файлы какие есть в репозитории?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Детально изучил вопрос.
    Эта проблема касается только конкретно репозитория https://github.com/inuyaksa/jquery.nicescroll

    a2411bee859442a59668b378184ee3d2.png

    Загружаю его и вижу в каталоге, что этого же файла не достаёт:
    99d818711f0940d6adf7e8a481322507.png

    ОООчень странно. Больше всего вводит в заблуждение то, что везде понаставлены номера версии 3.6.8:
    089a255825354b61b7feba6c061188a8.png

    Исследуем репозиторий на наличие тегов и имён веток и тут-то находим кое-что "неправильное":
    a9f6b160646f4d638c2806aed34f584b.png
    а ведь именно ветку 3.6.8 с отсутствующим файлом и грузит bower!!! И делает он свою работу правильно. Т.е. не распознав тег v3.6.8-fix как версию большую, чем 3.6.8, то и использует ветку с тегом 3.6.8, где файла нет.

    Теперь проведём "эксперимент" и попросим не версию 3.6.8, а v3.6.8-fix:
    b5628c3134cd4a4c8764c4bbbcd22b2d.png

    Теперь поправим файл bower.json:
    bf74341134ee4526ae0709b351b42d0d.png

    И проверим результат:
    31f0e836e89d4665baf28d313e7b43b0.png

    Остался открытым вопрос - а как же быть со знаками >= в настройках bower.json? А никак. Надо будет помнить про это и как только автор плагина исправит теги, то можно будет снова работать с версиями.
    Ответ написан
    Комментировать
  • Работа с изображением в php и js, как передать изображение от сервера без "браузерного" скачивания?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Если вы имеете в виду вставку исходного бинарного представления картинки в html, то есть такая тема img src base64
    Ответ написан
    Комментировать