• Как можно просто и удобно вставлять таблицу данных в БД SQLite3?

    @ERAFY Автор вопроса
    Немного более подробное описание 3-го варианта предложенного Vitaliy Orlov:

    Вариант решения, основанный на данной инструкции sqlitetutorial.net/sqlite-import-csv/.
    По шагам:
    1) Копировать данные в буфер обмена и вставить в Libre Calc (Ctrl+C; Ctrl+V).
    2) Сохранить полученную таблицу в .CSV файл (File -> Save As... -> Text CSV [.csv])
    3) Импортировать полученный .CSV файл через DB Browser или SQLiteStudio в уже созданную таблицу базы данных SQLite (Файл -> Импорт -> Таблицы из файла CSV...).
    Ответ написан
    Комментировать
  • Как решить ошибку "setting an array element with a sequence" при преобразовании типов данных DataFrame столбцов?

    @ERAFY Автор вопроса
    Решение.

    Сначала осуществим подключение к базе данных MS Access.
    import pyodbc
    conn_str = (
        r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
        r'DBQ=C:\MEGA\Programming\Data_Bases\Microsoft Access\Показания.accdb;'
        )
    cnxn = pyodbc.connect(conn_str)
    cursor = cnxn.cursor()

    Далее создадим пустой DataFrame и запишем в него построчно данные из MS Access.
    import pandas as pd
    df = pd.DataFrame(columns=['Дата', 'Электроэнергия', 'Горячая вода', 'Холодная вода'])
    
    cursor.execute('select * from TABLE')
    i=0
    for row in cursor.fetchall():
        df.loc[i] = [row[0], row[1], row[2], row[3]]
        i=i+1

    Всё, нужный DataFrame готов!
    Ответ написан
    Комментировать
  • Какие существуют программные библиотеки для поиска оптимального решения в теории игр?

    @ERAFY Автор вопроса
    Solver:
    GLPK (GNU Linear Programming Kit)
    COIN
    CPLEX
    GUROBI
    Revised Simplex Method
    Interior Point Methods
    Interior-Point-Legacy Linear Programming
    Active-Set linprog Algorithm

    Modeling Framework:
    - SciPy (обучающее видео)
    - PyOMO
    - PuLP (обучающее видео)

    Источник: видео.
    Ответ написан
    Комментировать
  • Как в LaTeX написать пояснение к формуле?

    @ERAFY Автор вопроса
    \begin{minipage}[h]{1\textwidth}
    \begin{equation}
    \overline{K_p} = \sqrt[n]{\prod K_\textup{chain}},
    \end{equation}
    \begin{tabular}{llll}
        where & $\overline{K_p}$ & {---} & coefficient of growth; \\
        \addlinespace
        & $K_\textup{chain}$ & {---} & \begin{tabular}[t]{@{}l@{}}chain coefficients of growth;\end{tabular} \\
        \addlinespace
        & $n$ & {---} & \begin{tabular}[t]{@{}l@{}}number of chain coefficients.\end{tabular}
    \end{tabular}
    \end{minipage}


    5a27eab7a5cf5674545542.png
    Ответ написан
    Комментировать
  • Как в LaTeX оформить список литературы по ГОСТу?

    @ERAFY Автор вопроса
    Как я сделал список литературы по ГОСТ (возможно кому-либо пригодиться в будущем):
    1) Скачал архив на этом сайте www.ctan.org/pkg/biblatex-gost
    2) Из него взял для себя файл: gost-numeric.bbx
    3) Подключил файл и библиотеку в преамбуле:
    \bibliographystyle{gost-numeric.bbx}
    \usepackage[parentracker=true,
    backend=biber,
    hyperref=false,
    bibencoding=utf8,
    style=numeric-comp,
    language=auto,
    autolang=other,
    citestyle=gost-numeric,
    defernumbers=true,
    bibstyle=gost-numeric,
    sorting=ntvy,
    ]{biblatex}
    \addbibresource{library.bib}

    Всё.
    Ответ написан
  • Как в LaTeX установить русский шрифт Times New Roman?

    @ERAFY Автор вопроса
    Я сменил дистрибутив MIKTeX на дистрибутив TeXLive, и тогда шрифт заработал.
    ОС: Windows 10.
    Программа: TeXStudio.
    Компилятор: XeLaTeX.
    Ответ написан
    Комментировать
  • Как List одномерных массивов записать в двухмерный массив?

    @ERAFY Автор вопроса
    string[,] dataArr = CreateRectangularArray(arrList);

    Сам метод:
    static T[,] CreateRectangularArray<T>(IList<T[]> arrays)
        {
               if (arrays.Count == 0)
                {
                    Console.WriteLine("Лист одномерных массивов arrays пуст (nullable). Из-за этого метод CreateRectangularArray не будет работать.");
                    int minorLength = 5;
                    T[,] ret = new T[arrays.Count, minorLength];
                    return ret;
                }
                else
                {
                    int minorLength = arrays[0].Length;
                    T[,] ret = new T[arrays.Count, minorLength];
                    for (int i = 0; i < arrays.Count; i++)
                    {
                        var array = arrays[i];
                        if (array.Length != minorLength)
                        {
                            throw new ArgumentException("All arrays must be the same length");
                        }
                        for (int j = 0; j < minorLength; j++)
                        {
                            ret[i, j] = array[j];
                        }
                    }
                    return ret;
                }
        }
    Ответ написан
    Комментировать
  • Как перечислять дни в C#?

    @ERAFY Автор вопроса
    string date1 = "2017-10-05";
    DateTime Date1 = DateTime.Parse(date1);
    
    string date2 = "2017-10-14";
    DateTime Date2 = DateTime.Parse(date2);
    
    DateTime incrementedDate = Date1;
    
    while (incrementedDate < Date2)
    {
        incrementedDate = incrementedDate.AddDays(1);
        Console.WriteLine(incrementedDate.ToString("yyyy-MM-dd"));
    }
    Ответ написан
    Комментировать
  • Где взять темы для Windows 10?

    @ERAFY Автор вопроса
    Ещё вариант можно использовать программу UltraUXThemePatcher.
    Скачать её можно на официальном сайте: www.syssel.net/hoefs/software_uxtheme

    После "патчинга" Windows 10 можно будет устанавливать различные темы на Windows 10. Скачивать темы можно будет со сторонних сайтов.

    Только нужно внимательно подбирать темы под версию Windows 10. И аккуратно удалять программу UltraUXThemePatcher (если понадобиться удалять). Иначе можно привести Windows 10 в нерабочее состояние.
    Ответ написан
    Комментировать
  • Как автоматически загружать зашифрованный файл-контейнер в облачное хранилище при изменении содержимого контейнера?

    @ERAFY Автор вопроса
    Нашёл решение!

    Нужно в настройках программы TrueCrypt (Settings -> Preferences) снять галочку чекбокса "Preserve modification timestamp of file containers".

    Тогда программа синхронизации файлов с облачным хранилищем будет синхронизировать зашифрованный контейнер после каждого изменения.
    Ответ написан
    Комментировать
  • Какие существуют расширения для выделения текста прямо в браузере?

    @ERAFY Автор вопроса
    Вот это расширение мне больше всего понравилось:
    Diigo Web Collector – Capture and Annotate
    Оно подойдет для Google Chrome, Яндекс браузера, Opera
    И на FireFox это расширение работает:
    https://addons.mozilla.org/en-US/firefox/addon/dii...

    Еще есть статья о подобных расширениях:
    https://www.maketecheasier.com/google-chrome-exten...
    Ответ написан
    Комментировать
  • Как парсить HTML при помощи HttpClient?

    @ERAFY Автор вопроса
    У меня еще при помощи HttpWebRequest получилось сделать:
    HttpWebRequest http = (HttpWebRequest)WebRequest.Create(pathToHtml);
            WebResponse response = http.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
            string html = sr.ReadToEnd();
    
            // Создание экземпляра локальной переменной «doc».
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    
            // Загрузка HTML кода в локальную переменную «doc».
            doc.LoadHtml(html);
    
            var x = doc.DocumentNode.SelectNodes(pathToHTMLTextNode).Elements("tr").ToList();

    Может кому пригодиться в будущем.
    Ответ написан
    Комментировать
  • Как извлечь данные из Excel (.xslx) файла в двухмерный массив (по столбцам)?

    @ERAFY Автор вопроса
    Сделал!
    Вернее нашел решения вот тут: stackoverflow.com и вот тут csharpcoderr.com и немного переделал.

    Нижеприведенный программный код (написанный на языке C#) считывает данные из указанного столбца таблицы Excel (целиком весь столбец сразу) и записывает в одномерный массив strArray. Тип данных, хранимых в результирующем одномерном массиве - string.

    //Создаём приложение.
            Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
            //Открываем книгу.                                                                                                                                                        
            Microsoft.Office.Interop.Excel.Workbook ObjWorkBook = ObjExcel.Workbooks.Open(pathToFile, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
            //Выбираем таблицу(лист).
            Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
            ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
    
            // Указываем номер столбца (таблицы Excel) из которого будут считываться данные.
            int numCol = 2;
        
            Range usedColumn = ObjWorkSheet.UsedRange.Columns[numCol];
            System.Array myvalues = (System.Array)usedColumn.Cells.Value2;
            string[] strArray = myvalues.OfType<object>().Select(o => o.ToString()).ToArray();
    
            // Выходим из программы Excel.
            ObjExcel.Quit();

    где:
    1) pathToFile - путь к Excel файлу.
    Можно указать нижеприведенным способом:
    string pathToFile = @"C:\Users\alexey\data.xlsx";

    2) numCol - номер столбца в таблице Excel из которого будет происходить чтение данных.

    Если нужно будет преобразовать все полученные элементы одномерного массива strArray из типа данных string к другому типу данных, к примеру double, то это можно сделать нижеприведенным кодом:
    // Преобразование всех элементов одномерного массива 
            // strArray из строкового типа в тип double.
            for (int i = 0; i < strArray.Length; i++)
                DataArray[i] = Convert.ToDouble(strArray[i]);
    Ответ написан
  • Как определить все места в слове, в которых можно осуществить перенос части этого слова на другую строку, по правилам русского языка?

    @ERAFY Автор вопроса
    В общем у меня получился нижеприведенный класс, позволяющий расставлять знаки "тире" в местах переноса слов по правилам русского языка.
    Класс работает на основе алгоритма Христова, и написан на языке C#.

    Запускать на выполнение нижеприведенный код можно строкой:
    word = PasteDashes.SeparateWord(word);
    Возможно кому пригодиться в будущем.

    -------------------------------------------------------

    public static class PasteDashes
        {
            // Метод проверки, есть ли в строке гласные?
            private static bool isNotLastSep(string subStr)
            {
                string vowel = "аеёиоуыэюя";
    
                var b = false;
                for (var i = 0; i < subStr.Length; i++)
                {
                    if (vowel.IndexOf(subStr.Substring(i, 1)) != -1)
                    {
                        b = true;
                        break;
                    }
                }
                return b;
            }
    
    
            // Метод разбиения слова на слоги
            private static List<string> addSeparator(string tmpS, List<string> sepList)
            {
                sepList.Add(tmpS);
                //tmpS = "";
    
                return sepList;
            }
    
    
            // Метод убирания знаков тире после первой буквы и перед последней (если там есть знаки тире)
            private static string ConnectFirstAndLastLettersToSyllables(string word)
            {
                if (word[1] == '-')
                    word = word.Remove(1, 1);
    
                if (word[word.Length - 2] == '-')
                    word = word.Remove(word.Length - 2, 1);
    
                return word;
            }
    
    
    
            //Основной метод работающий по алгоритму Христова
            public static string SeparateWord(string word)
            {
                string vowel = "аеёиоуыэюя";
                string voiced = "бвгджзлмнрхцчшщ";
                string deaf = "кпстф";
                string brief = "й";
                string other = "ьъ";
                string consonant = "бвгджзйклмнпрстфхцчшщ";
    
                string letter, syllable = "";
                var syllables = new List<string>();
    
    
                for (var i = 0; i < word.Length; i++)
                {
                    letter = word.Substring(i, 1);
                    syllable += letter;
    
                    bool l;
                    if (word.Length != i + 1)
                    {
                        var k = word.Substring(i + 1, 1);
                        Regex rgx = new Regex("[А-Яа-я]");
                        l = rgx.IsMatch(k);
                    }
                    else
                        l = false;
    
    
                    if (l)
                    {
                        // Проверка на признаки конца слогов
                        // Если буква равна 'й' и она не первая и не последняя и это не последний слог
                        if (
                            (i != 0) &&
                            (i != word.Length - 1) &&
                            (brief.IndexOf(letter) != -1) &&
                            (isNotLastSep(word.Substring(i + 1)))
                            )
                        {
                            syllables = addSeparator(syllable, syllables);
                            syllable = "";
                            //continue;
                        }
    
                        // Если текущая гласная и следующая тоже гласная
                        // EDIT: этот блок необходим если задача - корректно разбить слово на фонетические слоги,
                        // и не нужен если задача - разбить слово на части, которые можно переносить
                        //if (
                        //    (i < word.Length - 1)
                        //    && (vowel.IndexOf(letter) != -1) &&
                        //    (vowel.IndexOf(word.Substring(i + 1, 1)) != -1)
                        //    )
                        //{
                        //    syllables = addSeparator(syllable, syllables);
                        //    syllable = "";
                        //    // continue;
                        //}
    
                        // Если текущая гласная, следующая согласная, а после неё гласная
                        if (
                            (i < word.Length - 2) &&
                            (vowel.IndexOf(letter) != -1) &&
                            (consonant.IndexOf(word.Substring(i + 1, 1)) != -1) &&
                            (vowel.IndexOf(word.Substring(i + 2, 1)) != -1)
                            )
                        {
                            syllables = addSeparator(syllable, syllables);
                            syllable = "";
                            // continue;
                        }
    
                        // Если текущая гласная, следующая глухая согласная, а после согласная и это не последний слог
                        if (
                            (i < word.Length - 2) &&
                            (vowel.IndexOf(letter) != -1) &&
                            (deaf.IndexOf(word.Substring(i + 1, 1)) != -1) &&
                            (consonant.IndexOf(word.Substring(i + 2, 1)) != -1) &&
                            (isNotLastSep(word.Substring(i + 1)))
                            )
                        {
                            syllables = addSeparator(syllable, syllables);
                            syllable = "";
                            // continue;
                        }
    
                        // Если текущая звонкая или шипящая согласная, перед ней гласная, следующая не гласная и не другая, и это не последний слог
                        if (
                            (i > 0) &&
                            (i < word.Length - 1) &&
                            (voiced.IndexOf(letter) != -1) &&
                            (vowel.IndexOf(word.Substring(i - 1, 1)) != -1) &&
                            (vowel.IndexOf(word.Substring(i + 1, 1)) == -1) &&
                            (other.IndexOf(word.Substring(i + 1, 1)) == -1) &&
                            (isNotLastSep(word.Substring(i + 1)))
                            )
                        {
                            syllables = addSeparator(syllable, syllables);
                            syllable = "";
                            // continue;
                        }
    
                        // Если текущая другая, а следующая не гласная если это первый слог
                        if (
                            (i < word.Length - 1) &&
                            (other.IndexOf(letter) != -1) &&
                            ((vowel.IndexOf(word.Substring(i + 1, 1)) == -1) ||
                            (isNotLastSep(word.Substring(0, i))))
                            )
                        {
                            syllables = addSeparator(syllable, syllables);
                            syllable = "";
                            //continue;
                        }
                    }
                }
                syllables = addSeparator(syllable, syllables);
    
                string finalWord = string.Join("-", syllables);
    
                finalWord = ConnectFirstAndLastLettersToSyllables(finalWord);
    
                return finalWord;
            }
        }
    Ответ написан
  • Какой есть онлайн сервис, или программа, которые позволяли бы автоматически создавать словарь из редких слов встречаемых в англоязычном тексте?

    @ERAFY Автор вопроса
    Приведу пример кода, того как я получал перевод слов(а) из Яндекс-переводчика. На языке C#.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Net;
    using System.IO;
    using System.Net.Http;
    using System.Xml.Linq;
    
    namespace YandexTranslateConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                string translateWords = "Behind me";
      
                string sURL = "https://translate.yandex.net/api/v1.5/tr/translate?key=~Мой ключ~&text=" + translateWords + "&lang=en-ru";
    
                string Text;
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(sURL);
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
    
                using (StreamReader stream = new StreamReader(
                     resp.GetResponseStream()))
                {
                    Text = stream.ReadToEnd();
                }
                XDocument doc = XDocument.Parse(Text);
                string hashValue = "";
                foreach (XElement hashElement in doc.Descendants("text"))
                {
                    hashValue = hashValue + (string)hashElement + " ";
                    Console.WriteLine(hashValue);
                }
                Console.ReadLine();
            }
        }
    }
    Ответ написан
    Комментировать
  • Как реализовать подсчет количества дочерних узлов, внутри родительского узла некоторого XML-документа?

    @ERAFY Автор вопроса
    Модифицированный вариант (на основе кода от Вадима Ш)
    XDocument xml = XDocument.Load(pathToXMLFile);
    int countFields = (from xe in xml.XPathSelectElement("//record").Descendants("field") select xe).Count();

    Может кому в будущем пригодиться такая реализация.
    Ответ написан
    Комментировать
  • Как написать макрос в Excel, который строку данных из ячейки "рассортировывал" бы в таблицу?

    @ERAFY Автор вопроса
    Еще для реализации данной задачи я написал вот такой макрос:
    Он учитывает, что названия некоторых стран могут состоять из нескольких слов, к примеру "United Arab Emirates". Может кому пригодиться в будущем.
    Public Sub ConvertRowToTable()
    
        Dim textString As String
        Dim textArray() As String
         
        textString = ActiveCell.Text    'Получаем строку из активной (выдененной пользователем) ячейки
        textArray() = Split(textString) 'Разбиение строки на подстроки, которые будут храниться в элементах массива.
                                        'Разбиение осуществлялось через пробелы
    
    
    
        'Цикл объединения элементов массива, слов, разделенных ранее пробелами (дело в том, что функция Split, слова,...
        '...разделенные пробелами, разносит в разные элементы массива, и эти слова необходимо объединять в один элемент массива
        m = 0
        For i = LBound(textArray) To UBound(textArray)
          
            If i = 0 Then
                i = 1
            End If
            
            Check1 = textArray(i - 1) Like "*[a-z]*" 'Проверка наличия буквенных символов в предыдущей строке элемента массива
            Check2 = textArray(i) Like "*[a-z]*"     'Проверка наличия буквенных символов в текущей строке элемента массива
          
          
            If Check1 And Check2 Then                'Если в строках предыдущего и текущего элементах массива содержиться буквенный текст, то...
                       
               textArray(i - 1) = textArray(i - 1) & " " & textArray(i) '...конкатенируем строки текущего и предыдудщего элементов массива
               
               m = m + 1
               
               For n = i To UBound(textArray) - m    'Цикл осуществляющий сдвиг всех элементов массива на m
            
                    textArray(n) = textArray(n + 1)
                     
               Next n
                
            textArray(n) = ""  'Обнуляем строки последних ненужных элементов массива
               
            i = i - 1  'Осуществляет возврат цикла назад, для повторной проверки одновременного наличия буквенных символов в строке,...
                       '...уже нового предыдущего элемента массива и текущего элемента массива
                        
            End If
                   
        Next i
    
    
    
        'Цикл формирования таблицы из массива данных
        j = 0
        n = ActiveCell.Column  'Возвращает номер стобца активной ячейки
        k = ActiveCell.Row + 1 'Возвращает номер строки активной ячейки и + 1
        For i = LBound(textArray) To UBound(textArray)
        
            If j >= 3 Then 'Если j >= 3, то переходим на новую строку и возвращаемся на изначальный столбец
                j = 0      'возвращение на изначальный столбец
                k = k + 1  'переход на новую строку
            End If
    
            textArray(i) = Replace(textArray(i), "(", "") 'Убираем ненужные скобки
            textArray(i) = Replace(textArray(i), ")", "") 'Убираем ненужные скобки
            
            Sheets(1).Cells(k, j + n) = textArray(i)
                    
            j = j + 1
            
        Next i
    
    
    
    End Sub
    Ответ написан
    Комментировать
  • Как сделать расширенный сниппет организации в поисковой системе?

    @ERAFY Автор вопроса
    Даже можно вот так:
    https://developers.google.com/structured-data/cust...

    Там есть пример кода (при его использовании, можно будет добавить изображение бренда организации):
    <script type="application/ld+json">
    { "@context" : "http://schema.org",
      "@type" : "Organization",
      "url" : "http://www.your-company-site.com",
      "logo" : "http://www.example.com/logo.png",
      "contactPoint" : [
        { "@type" : "ContactPoint",
          "telephone" : "+1-401-555-1212",
          "contactType" : "customer service"
        } ] }
    </script>
    Ответ написан