субота, 25 квітня 2020 р.

Покращені коментарі під статтями Blogger (Blogspot)

Стандартне здійснення коментарів в даний час на Blogger доволі незручне. Це можна покращити за допомогою плагіна від disqus.com. Встановлення доволі просте і показане на наступному відео.


Математичні формули на Blogger (LaTeX)

LaTeX формули на blogger (blogspot)
Якщо на блозі необхідне відображення формул, то можна або додавати формули рисунками або ж залучити підтримку LaTeX до свого блогу. Для цього необхідно додати відповідний скрипт до нашого блогу.

Спосіб один, додаємо в режимі редагування HTML (Тема/Редагувати HTML) в середині тегу head наступні рядки:

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js">
MathJax.Hub.Config({
 extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
 jax: ["input/TeX", "output/HTML-CSS"],
 tex2jax: {
     inlineMath: [ ['$','$'], ["\\(","\\)"] ],
     displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
 },
 "HTML-CSS": { availableFonts: ["TeX"] }
});
</script> 
Далі можемо використовувати наші формули написані у форматі LaTex:
x=x^{2}+\frac{a}{b}
Формулу необхідно оточити знаками долара і вуаля: $x=x^{2}+\frac{a}{b}$

Інший спосіб використати рішення від latex.codecogs.com. В даному випадку код з адресою скрипта додаємо у HTML/JavaScript гаджет, що наявний у блозі на платформі blogger(blogspot):
<script type="text/javascript" src="http://latex.codecogs.com/latexit.php?p&li&div></script>
При використанні цього рішення формули необхідно додатково розмістити в теги абзацу або списку: <p>...</p> та <li>...</li>.

Крім того, для тих хто не хоче особливо заморочуватися з синтаксисом LaTeX на даному сайті є відповідний графічний редактор формул, який сформатує нам формулу у форматі LaTeX: www.codecogs.com/latex/eqneditor.php

Перше рішення мені більше сподобалось, оскільки код від latex.codecs.com викликав деякі проблеми із відображенням одного з моїх лічильників на блозі.

четвер, 23 квітня 2020 р.

Multiple Subplots (python)

Будувати множинні графіки в python можна різними способами. При побудові графіків з використанням бібліотеки Matplotlib існує два стилі, які часто комбінуються. Один це стиль matlab, який реалізовується за допомогою функцій у модулі pyplot. Інший стиль - це об'єктно- орієнтований стиль, який мені особисто більше подобається (мабуть Java дається взнаки). В об'єктно орієнтованому стилі ви маєте фігуру - що представляє собою весь графік і підграфіки(subplots), що предсталяються об'єктами Axes. Взявши потрібний об'єкт Axes ми отримуємо можливість маніпулювати нашим підграфіком.

Один із способів це зробити використати метод(функцію) sublots():
#будуємо графік 2х2 (4 підграфіки)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
Можна також так:
fig, axs = plt.subplots(2, 2, sharex=True, sharey=True)
axs[0, 0].plot(x) # працюємо з координатами підграфіків
sharex=True, sharey=True - означає, що у нас будуть для всіх графіків спільні осі Х та Y. Якщо хочемо для кожного графіка свої осі, то не задаємо ці параметри.

Таким чином можемо побудувати наші графіки:

неділя, 19 квітня 2020 р.

Клас TreeSet (Java)

Клас TreeSet дозволяє створювати відсортовану множину. Тобто елементи не повторюються та зберігаються у відсортованому порядку. Для зберігання елементів застосовується бінарна деревоподібну структура. Об'єкти зберігаються в відсортованому порядку по зростанню. Час доступу та одержання елементів доволі малий, тому клас TreeSet підходить для зберігання великих об’ємів відсортованих даних, які повинні бути швидко знайдені.

Клас TreeSet розширює клас AbstractSet та реалізує інтерфейс NavigableSet. NavigableSet реалізується на базі TreeMap.

В класі доступні чотири конструктори:

TreeSet () 
TreeSet(Collection  с) 
TreeSet(Comparator  компаратор) 
TreeSet(SortedSet  ss)

субота, 18 квітня 2020 р.

Клас LinkedHashSet

Клас LinkedHashSet розширює клас HashSet не додаючи ніяких нових методів. Працює він дещо довше за HashSet проте зберігає порядок в якому елементи додаються до нього. Відповідно це дозволяє організувати послідовну ітерацію вставлення та витягнення елементів. Всі конструктори та методи роботи з LinkedHashSet аналогічні тим, що є в класі HashSet.
import java.util.HashSet;
import java.util.LinkedHashSet;

public class TestLinkedHashSet {
    public static void main(String[] args) {
        HashSet<String> hs=new HashSet<String>();
        LinkedHashSet<String> lhs=new LinkedHashSet<String>();
        hs.add("1");
        hs.add("2");
        hs.add("3");
        hs.add("4");
        hs.add("5");
        lhs.add("1");
        lhs.add("2");
        lhs.add("3");
        lhs.add("4");
        lhs.add("5");
        System.out.println("HashSet: "+hs);
        System.out.println("LinkedHashSet: "+lhs);
    }
}
Результат роботи програми:
HashSet: [3, 2, 1, 5, 4]
LinkedHashSet: [1, 2, 3, 4, 5]


пʼятниця, 17 квітня 2020 р.

Підсвітка синтаксису на Blogger (google-code-prettify)

Свого часу написав статтю про підсвітку синтаксису для блогів на платформі Blogger (blogspot.com): Підсвітка синтаксису на Blogger. Підсвітка від Алекса Горбачева получалась доволі красивою з реалізацією під різні мови, проте доволі часто через завантажування скриптів блог починав підвисати і час його завантаження збільшився. Тому вирішив відмовитися від неї і користуватися тегом pre. Проте хочеться все ж хоч якось прикрасити код) Тому знайшов інший вихід скрипти google-code-prettify.

Як і в попередньому випадку заходимо в управління блогом, знаходимо пункт "Тема" і тиснемо кнопку "Редагувати HTML" і там перед тегом <head> або ж після нього вставляємо:
<script src='https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js'/>
В html коді нашої статті оточуємо програмний код тегами pre:
<pre class="prettyprint">наш програмний код</pre>
або ж з вказанням мови
<pre class="prettyprint lang-html">
наш код
</pre>
Дивіться також давнішу публікацію:

Клас HashSet

HashSet – це клас призначений для зберігання даних у вигляді множини невпорядкованих елементів. Якщо потрібна впорядкована множина, то використовуйте TreeSet. HashSet також не гарантує стабільного порядку збереження об’єктів. Тобто при додаванні об’єктів порядок зберігання елементів змінюється. Вони можуть бути збережені як в кінці множити так і в середині. Якщо потрібен один порядок зберігання об’єктів використовуйте LinkedHashSet.

Сам термін «множина» означає, що елементи не будуть повторюватися. Для зберігання і пошуку елементів використовується хеш-код об’єкта. HashSet також може містити значення null. Власне всередині самої реалізації HashSet використовується клас HashMap, який дозволяє зберігати елементи у вигляді двох складових ключа та хеш-коду. У класі HashSet хеш-код недоступний і використовується неявно для користувача.

Клас HashSet розширює клас AbstractSet та реалізує інтерфейс Set. Також реалізовує інтерфейси Serializable та Clonable.

HashSet має такі конструктори:
HashSet()
HashSet (Collection  c)
HashSet (int об’єм)
HashSet (int об’єм, float коефіцієнт_заповнення)