Задать вопрос
  • Какой формат динамической UTM метки в Facebook?

    tomnolane
    @tomnolane Автор вопроса
    профессиональный разработчик
    на момент 29.05.2018, динамических utm меток у facebook рекламы нету
    Ответ написан
    Комментировать
  • Где получить список IP адресов мобильного оператора YOTA?

    tomnolane
    @tomnolane Автор вопроса
    профессиональный разработчик
    Обратился сюда (личным сообщением) и мне дали список. Всех благодарю за ответы
    Ответ написан
    Комментировать
  • Секундные подвисания Windows 10?

    tomnolane
    @tomnolane
    профессиональный разработчик
    совсем недавно у меня тоже был ноутбук фирмы ASUS и в нём была аналогичная проблема, разве что на меньшее количество секунд подвисало (до 5 сек). (прим. только на Windows, на Linux вроде норм было). Поставил основным SSD, стало лучше, но каждый раз, когда активно использовался HDD проблема повторялась, хотя было подвивание не совсем "обычное": не полностью блокировалось всё (т.е. я мог двигать мышкой и делать простейшие операции но с (если сравнивать) fps примерно 4-6 ). Проблему решил просто: ноутбук отдал сестре, себе взял thinkpad
    Ответ написан
    Комментировать
  • Как правильно дождаться выполнения всех потоков, созданных в цикле?

    tomnolane
    @tomnolane
    профессиональный разработчик
    оффтоп
    люди подписались чисто поглазеть или поржать?

    вы уверены, что вам нужен Thread?
    Task или Thread в C#.NET 4.0 WPF? ( Павел Елизарьев доступно описал разницу в ответе)
    я бы использовал Task для начала, т.к. есть такая замечательная штука, как пулл потоков (подзабыл как на английском называется) который лучше обычного программиста (автоматически) понимает, когда и кто закончил, сколько есть свободных, сколько нужно и что с ним дальше делать. И нужно у вас в коде делать акцент не на блокирование/синхронизацию потоков (оставьте их в покое - чем быстрее сделают, тем лучше), а использовать вот такую простую штуку: Оператор lock
    а зависание происходит потому, что вы и основной поток блокируете.
    Ключевое слово lock не позволит ни одному потоку войти в важный раздел кода в тот момент, когда в нем находится другой поток. При попытке входа другого потока в заблокированный код потребуется дождаться снятия блокировки объекта.
    Ответ написан
    1 комментарий
  • Как скрыть загрузку css?

    tomnolane
    @tomnolane
    профессиональный разработчик
    я делаю так: (на php)
    <?php
    echo '<style>';
    require 'css/bootstrap.min.css';
    echo '</style>';
    ?>

    и этого вполне достаточно. Google Page Speed перестаёт ругаться.

    upd
    для django наверно вот так:
    <style>{% include "/static/css/style.css" %}</style>
    Ответ написан
  • Доступ к компьютеру c windows по ssh?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Есть разные программы, но стразу встречается проблема - это динамический IP адрес, который выдаёт провайдер вашего интернета. Сегодня у вас один IP, завтра другой.. и как вы найдёте компьютер на просторах интернета?
    К счастью, есть решение, которое я лично сам использую (в т.ч. и главный вирусный аналитик Лабаротии Касперского) - это LogMeIn Hamachi - он преобразует динамический IP в статический (он бесплатен) + Remote Manipulator System (сокращенно RMS) - и программа для управлением компьютером/ами (тоже бесплатно и легально, в отличии от teamviewer). Пользуюсь уже не один год, доволен, очень удобно.
    P.S. можно управлять хоть через командную строку, хоть визуально

    upd
    скриншот 1
    скриншот 2
    скриншот 3
    Ответ написан
  • Адекватный хостер VPS в России?

    tomnolane
    @tomnolane
    профессиональный разработчик
    использую majordomo с 2012 года. Питерская компания, ей около 20 лет. Доволен. Бывают маленькие недостатки - пишешь в тех поддержку, оперативно делают (как правило, проблемы очень редко бывают). Цены очень приемлемые. Лично я доволен всем, менять или искать альтернативу не планирую
    Ответ написан
    Комментировать
  • Как в C# выполнить JavaScript-код и вернуть результат (без браузера)?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Ответ написан
    Комментировать
  • Зачем подделывать и как защититься от чужой рассылки писем от моего домена?

    tomnolane
    @tomnolane Автор вопроса
    профессиональный разработчик
    ответ от сервиса, предоставляющие массовую рассылку
    Сообщаю. была найдена в блочном редакторе XXS уязвимость. У нас работает Wallarm https://wallarm.com/ и мы платим им постоянно за его работу.
    Произошла SQL инъекция, и Wallarm ее не заметил.
    Злоумышленник смог добавить в свой аккаунт через нее подтвержденные адреса ( и на вашем домене в том числе) и поставить себе большой кредитный лимит, а так же изменил уровень попадания на модерацию до full trust ( то есть мы не проверяем никогда, кроме spam trap адресов ).
    В ночь, когда работает только один сотрудник ( так как больше не требуется ) злоумышленник зарегистрировал аккаунт на сервисе esputnik , там разместил html файл с редиректом на сайт vsegdaplus.ru . Потом он зашел в свой аккаунт с не его подтвержденными адресами и включенным огромным кредитным лимитом и малыми партиями всю ночь до утра слал письма, всего ушло 1,9 млн трафика от 5ти разных доменов. Все одной тематики.

    Как мы "залатали": уязвимость найдена и закрыта.
    В перечне действий по такому ручному внесению адреса в подтвержденные не для staff аккаунтов установлен блокиратор + уведомление аларм на группу админов.
    В Wallarm открыт кейс на расследование по инциденту, так как это их работа выявлять и закрывать нас от таких взломов.
    Полученные данные по IP адресам взлома, по домену, на котором располагался вредоносный код и который был использован для инъекции, и другие данные - все поданы в юридический отдел для соответствующей подачи заявления в киберполицию.
    Ответ написан
    Комментировать
  • Можно ли делать рассылку с помощью facebooke бот?

    tomnolane
    @tomnolane
    профессиональный разработчик
    можно, но очень не долго...
    спойлер

    сразу, после того как вы нажимаете кнопку "опубликовать", ваша публикация проходит почти 100 000 тестов и проверок (от безопансти, до определения спама, копипаста, оригинальности, религиозной и политической принадлежности и т.д.) и такие "штуки" давно уже успешно банятся, причём очень быстро...
    Ответ написан
    Комментировать
  • Настройка Visual Studio Code?

    tomnolane
    @tomnolane
    профессиональный разработчик
    самые основные:
    Auto Close Tag - авто закрытие тегов
    Auto Rename Tag - переименование парных тегов
    Beautify - разжатие кода (из minify в стандартный вид)
    highlight-mathing-tag - подсвечивание парных тегов (нужно настроить в конфиге, чтобы поярче было)
    html snippets - сниппеты как в сублайме
    insert <br> tag - вставка тега новой строки через шифт+enter
    PHP Debug - деббагер для php (нужно настраивать)
    Debugger for Chrome - JS дебаггер
    vscode-icons - иконки для VSC
    minify - сжатие кода
    css auto prefix - автопрефиксы
    Insert Numbers - полезное расширения для вставки чисел определенного формата во множество мест с инкрементом
    ================
    ещё некоторые, которые я добавил и пользуюсь:
    apache Conf (для подсветки .htaccess)
    AutoFileName - дополнение пути (например для "requere" в node.js)
    Bookmarks - делать закладки в коде
    Bracket Pair Colorizer - подсвечивать парные скобки (квадратные, фигурные, прямоугольные, круглые) очень удобно
    gitignore - добавляет .gitignore файл под проект (node.js, docker, yii2, laravel и т.д.)
    GitLens — Git supercharged - показывает гит-коммиты в коде (и автора коммита, удобно в командной разработке)
    HTML Class Suggestions
    Live Server - открывает браузер, где в режиме "онлайн" видишь изменения в html
    Markdown Preview Enhanced - тоже самое, что и Live Server, но только для страниц с markdown разметкой
    Material Icon Theme - для красоты VSC)
    Monokai Dark Soda - моя любимая тема разработки
    MySQL Syntax - для подсветки синтаксиса sql
    PHP Intellisense -
    Quick gitignore - добавляет файл/директорию в gitgnore
    Regex Previewer - помогает в регуляркой
    SQL Server (mssql) - для работы с sql server
    SVG Viewer - просматривать SVG картинки
    Todo Tree - делать заметки, удобно
    Remote FS - для удаленного подключения по FTP (удобно, если несколько серверов), пример конфига:
    { 
        "remotefs.remote": {"site": {
            "scheme": "ftp",
            "host": "1************01",
            "username": "ad**********ain",
            "password": "Lv************xF",
            "rootPath": "/"
          },
          "site2": {
            "scheme": "ftp",
            "host": "17**********1",
            "username": "a*****************m",
            "password": "************O",
            "rootPath": "/"
          },
          "moy-yandex": {
            "scheme": "ftp",
            "host": "a***********u",
            "username": "a***************mone",
            "password": "1***************W",
            "rootPath": "/"
          }
      }


    UPD
    Есть ещё хорошее приложение: Gremlins. Он подсвечивает невидимые символы в коде. Но его нужно немного "допилить", чтобы показывал невидимый символ юникод u+feff (образуется часто, когда кодировка страницы UTF-8 with BOM)
    собственной как допилить я сам же описываю в своем вопросе: тут

    что касается сннипетов для php: бывает такое, что они не срабатывают и тут две причины: пользователь достаточно быстро жмет TAB (VSC не успевает ещё понять, что пользователь закончил ввод) и когда достаточно долго работаешь в VSC без перезагрузки последнего.

    ИМХО: рано или поздно эта проблема решиться. VSC стремительно развивается и такая проблема будет решена (до этого чтобы быстрее было - лучше написать сюда об этом)
    Согласен с Artem , с тем, что Brackets имеет некоторые вещи лучше и оптимизированнее, чем VSC, и я для Front-end чаще работаю в Brackets (в большей части из-за возможности видеть online изменения тут же в браузере). Но главный минус Brackets от VSC - при большой кол-во плагинов он очень-очень тупит, также мне не нравится работа Brackets-ftp.
    Послесловие:
    VSC ещё учится и становится лучше. Рано или поздно он обгонит и Sublime, Atom и другие IDE - это вопрос времени, потому что: 1) он open source 2) финансирует и ведет разработку Microsoft 3) бесплатен!!! и последнее камень в огород всем крупным IDE
    Ответ написан
    2 комментария
  • Есть адекватная альтернатива Visual Studio?

    tomnolane
    @tomnolane
    профессиональный разработчик
    увы... (если про шарп)
    Ответ написан
    Комментировать
  • Как подделать HTTP_HOST?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Ответ написан
    Комментировать
  • Как получить *.mdf файл из Access?

    tomnolane
    @tomnolane
    профессиональный разработчик
    добавляем в rerefences библиотеку из COM: Miscrosoft ADO Ext.6.0 for DLL and Security
    59dd1c9316f57094123256.png
    далее рабочий код:
    using System;
    using ADOX;
    using System.Data.OleDb;
    using System.Data;
    using System.IO;
    
    namespace ConsoleApplication4
    {
        class Program
        {
            static void Main(string[] args)
            {
                CreateMdb("toster_ru.mdb");
                string fileNameWithPath = Environment.CurrentDirectory + "\\toster_ru.mdb";
    
                CreateTableInToMdb(fileNameWithPath);
                InsertToMdb(fileNameWithPath);
                UpdateToMdb(fileNameWithPath);
    
                var myDataTable = new DataTable();
                using (var conection = new OleDbConnection("Provider = Microsoft.JET.OLEDB.4.0;  Data Source = " + fileNameWithPath))
                {
                    conection.Open();
                    var query = "Select info From my_table";
                    var adapter = new OleDbDataAdapter(query, conection);
                    adapter.Fill(myDataTable); 
                    Console.WriteLine(myDataTable.Rows[0][0].ToString()); //output: toster2.ru
                    Console.ReadKey();
                }
            }
    
            static void CreateMdb(string fileNameWithPath)
            {
                if (File.Exists(fileNameWithPath))
                    return;
    
                Catalog cat = new Catalog();
                string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5";
                cat.Create(String.Format(connstr, fileNameWithPath));
                cat = null; 
            }
    
            static void InsertToMdb(string fileNameWithPath)
            {
                var con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileNameWithPath);
                var cmd = new OleDbCommand();
                cmd.Connection = con;
                cmd.CommandText = "insert into my_table (ID, [Info], [text])  values (@ID, @Info, @text);";
                cmd.Parameters.AddWithValue("@ID", 1);
                cmd.Parameters.AddWithValue("@Info", "toster.ru");
                cmd.Parameters.AddWithValue("@text", "blabla");
                con.Open(); 
                cmd.ExecuteNonQuery();
                con.Close();
            }
    
            static void UpdateToMdb(string fileNameWithPath)
            {
                var con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + fileNameWithPath);
                var cmd = new OleDbCommand();
                cmd.Connection = con;
                cmd.CommandText = "UPDATE my_table SET [Info] = ?, [text] = ? WHERE ID = ?;";
                cmd.Parameters.AddWithValue("@p1", OleDbType.VarChar).Value = "toster2.ru";
                cmd.Parameters.AddWithValue("@p2", OleDbType.VarChar).Value = "blabla2";
                cmd.Parameters.AddWithValue("@p3", OleDbType.VarNumeric).Value = 1;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
    
            static void CreateTableInToMdb(string fileNameWithPath)
            {
                try
                {
                    OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fileNameWithPath);
                    myConnection.Open();
                    OleDbCommand myCommand = new OleDbCommand();
                    myCommand.Connection = myConnection;
                    myCommand.CommandText = "CREATE TABLE my_table([ID] NUMBER, [Info] TEXT, [text] TEXT)";
                    myCommand.ExecuteNonQuery();
                    myCommand.Connection.Close();
                }
                catch { }
            }
        }
    }


    UPD
    MDF
    Ответ написан
  • Как сделать возвращение к началу программы?

    tomnolane
    @tomnolane
    профессиональный разработчик
    есть три варианта:
    1) использовать метку
    M:
    if (att == 1) {
    //или тут M:
    Console.WriteLine ("Вы использовали обычную атаку");
    Console.WriteLine ("Урон: " + attack);
    Console.WriteLine ("У врага осталось: " + (ehp - attack) + "хп");
    Console.WriteLine ("Враг вас убил, попробуйте еще раз")
    goto M; //(Здесь должен быть банальный рестарт программы.)
    }

    2) сделать функцию отдельно (рекурсию)
    private void MyFunc(bool stop = false;)
    {
    if(stop) return;
    if (att == 1) { 
    Console.WriteLine ("Вы использовали обычную атаку");
    Console.WriteLine ("Урон: " + attack);
    Console.WriteLine ("У врага осталось: " + (ehp - attack) + "хп");
    Console.WriteLine ("Враг вас убил, попробуйте еще раз")
    MyFunc(); //(Здесь должен быть банальный рестарт программы.)
    }
    }

    3) использовать цикл for (бесконечный)
    int damage = 100;
    for(;;)
    {
    if (att == 1) { 
    Console.WriteLine ("Вы использовали обычную атаку");
    Console.WriteLine ("Урон: " + attack);
    Console.WriteLine ("У врага осталось: " + (ehp - attack) + "хп");
    Console.WriteLine ("Враг вас убил, попробуйте еще раз") 
    }
    hp < damage  ? break : continue; //(Здесь должен быть банальный рестарт программы.)
    }


    upd
    На свой лад накидал в некоторых местах условия выхода из метода/цикла. Поскольку по вашему коду не понятно, в каком случае должно всё это прекратится, поэтому условие, когда всё должно закончится - сами подкорректируйте. Главное, выше три способа, полностью отвечают на ваш заданный вопрос.
    Ответ написан
    5 комментариев
  • Лучшие ресурсы по многопоточности в C#?

    tomnolane
    @tomnolane
    профессиональный разработчик
    быстрее всего будет на youtube чтобы понять основу:
    (очень понятно, по русски, наглядно и доходчиво)
    тык (часть 1)
    тык (часть 2)
    тык (часть 3)
    и т.д. ...
    когда освоите и поймете, юзайте книги
    Ответ написан
    Комментировать
  • Можно ли сделать так и на сколько это будет правильно???

    tomnolane
    @tomnolane
    профессиональный разработчик
    не думаю, что удачный вариант. я не создавал CMS'ки. Но пользовался в своё время wordpress и joomla (потом отказался от их использования).
    Объясняю почему не удачна мысль: у вас блок может иметь 5000 строк кода. Эта куча текстовой информации которая хранится в БД + проблема будет с SQL инъекциями, т.к. экранировать не получится вводные данные (либо слишком геморройно всё это добавить).
    Может проще - в БД хранить (условно) id блока. Например, если выбран id = 1, то в Landing Page загружается файл example.php с этим кодом. Если id = 2, то example2.php. А непосредственно править нужно в самом php файле... вроде так работают большинство CMS.... не думаю, что есть вариант получше...

    html код нужно хранить в файлах, не в БД
    Ответ написан
    5 комментариев
  • Как можно получить список у кого я в бане в вк?

    tomnolane
    @tomnolane
    профессиональный разработчик
    увы...
    либо использовать это. в fields использовать blacklisted, blacklisted_by_me
    но это "костыль".
    Ответ написан
  • Как стать продвинутым сайтоклепателем (формоклепателем) и отправиться на каторгу, чтобы пахать за говяжий дошик и оплачивать сарай?

    tomnolane
    @tomnolane
    профессиональный разработчик
    Стоит ли идти в IT индустрию в 20 лет если твои навыки и знания равны 0?
    1) если обращаетесь к сообществу - разговаривайте на его языке (нормальном русском или на английском). Это касается и при разговоре с работодателями. (это не нотация, а пожелание)
    2) у вас есть портфолио с готовыми работами (не типа "Hello world") и Н-проектов на гитхабе? к примеру хотя бы так
    3) в 20 лет все мы маленькие Наполеоны, желающие, чтобы солнце крутилось вокруг нас, а не мы вокруг солнца. Но для работодателей (и вообще, кто дает деньги) 20-лет автоматом говорит, что человек ещё "зеленый", хотя это может и не так. Докажите это!
    4) "знать-прочитать" != увидеть результат. Посмотрите глазами "работодателями": вы(работодатель) - даете (условно) 250 долларов за простенькую программу. Через 10 мин у вас 50 заявок (вы только разместили объявление) от индусов, готовых это сделать и за 10 долларов. Зачем вам искать фрилансера, у которого нету сертификата, диплома, работ на гитхабе, портфолио, готового (без торга) сделать за 250 долларов? а?
    5) не нужно знать 30 языков и уметь писать "Hello wolrd" на них. Лучше знать отлично 1-2 и уметь писать своих "танчиков"
    Ответ написан
    4 комментария