Відмінності між одинарними ([ ]) і подвійними ([[ ]]) скобами у bash

[ і [[ використовуються для обчислення виразів. [[ працює лише в Bash, Zsh і Korn оболонках, і вона більш потужна; [ доступна в усіх POSIX оболонках.

Одинарна скоба [ насправді це те саме, що команда test, тобто це не синтаксис.

Подвійні скоби [[ ]] – це синтаксис. Вони дозволяють C-подібний синтаксис із >, <, >=, <=, !=, ==, &&, || операторами.

Усередині одинарних скоб, вам потрібно використовувати подвійні лапки навколо змінних, як і в більшості інших місць, оскільки це запобігає тлумаченню всіх спеціальних символів усередині рядка в лапках окрім $, `, \. Усередині подвійних скоб, вам не потрібні подвійні лапки, оскільки оболонка не виконує розбиття на слова чи глобування (globbing): вона розбирає умовний вираз, а не команду.

Хоча є виняток – [[ $var1 == "$var2" ]] де необхідно використати лапки, якщо ви бажаєте виконати побайтове порівняння рядків, інакше, $var2 був би шаблоном для порівняння з $var1.

Читати далі…

Advertisements
Категорії:Uncategorized Позначки:

Як створити документ з україномовним індексом на LaTeX

Сирцевий tex-файл:

\documentclass{book}
\usepackage[T1, T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, ukrainian]{babel}
\usepackage[xindy]{imakeidx}
\makeindex[program=truexindy]

\makeatletter
\newcommand{\ukindex}[2][\imki@jobname]{%
  \index[#1]{\detokenize{#2}}%
}
\makeatother

\begin{document}

\chapter{Оптимізація}

\ukindex{notepad}
\ukindex{apple}
\ukindex{лінійне програмування|(}
\ukindex{симплекс-метод}
\ukindex{метод еліпсоїдів}
\pagebreak
\ukindex{метод внутрішньої точки}
\ukindex{лінійне програмування|)}

Якийсь текст. 
\printindex

\end{document}

Читати далі…

Категорії:LaTeX Позначки:

Встановлюємо Apache, PHP та MySQL на Windows 8

Apache

Apache не надає двійкові файли для Windows, однак з їхньої сторінку є посилання на декілька інших сайтів які надають вже готові двійкові файли, наприклад Apache Lounge.

Обирайте ту версію, бітність якої збігається з бітністю вашої Windows.

Після завантаження, просто розпакуйте теку Apache24 в корінь вашого диску, так щоб у вас був шлях на кшталт C:\Apache24\bin.

Відчиніть вікно командного рядку (Windows+R і наберіть cmd, потім Enter), змініть теку на C:\Apache24\bin і запустіть httpd.exe, зазвичай ви не повинні отримати ніяких помилок.

Якщо ж ви побачили щось подібне на (номер порту може бути іншим)

(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs

тоді вам треба з’ясувати хто саме використовує цей порт і вбити той процес за допомогою Task Manager. Допоможе виявити “злодія” приладдя netstat -ano, щоб було швидше можна так netstat -ano | findstr 0.0:80.
Читати далі…

Категорії:Адміністрування Позначки:, ,

Об’єкти і об’єктно орієнтоване програмування у Javascript

Ми вже знаємо основи використання об’єктів, а тепер час зазирнути глибше.

Подібно до масивів, об’єкти в Javascript є контейнерами (також відомими як агрегатні або складні типи даних). Об’єкти мають дві основні відмінності від масивів:

  • Масиви містять значення, проіндексовані числами; об’єкти містять властивості індексовані рядками або символами.
  • Масиви впорядковані (arr[0] завжди іде перед arr[1]); об’єкти ж ні (ви не можете гарантувати, що obj.a іде перед obj.b).

Ці відмінності доволі езотеричні (але важливі), отже, давайте думати про властивості (це не каламбур) завдяки яким об’єкти дійсно особливі. Властивість складається з ключа (рядок чи символ) і значення. Що робить об’єкти особливими так це те, що ви можете доступатись до властивостей за їх ключем.
Читати далі…

Категорії:Javascript Позначки:,

Керування багатьма роботами

Організаційні принципи колективної поведінки

  • Кожен діє незалежно
  • Дії базуються на локальній інформації (ніхто не має глобальної картинки)
  • Анонімна координація (неважливо з ким ти взаємодієш)

Складність

n роботів, m перепон.

Розмірність простору станів збільшується лінійно із кількістю роботів
Кількість потенційних взаємодій зростає як n*n O(mn + n2)
Кількість потенційних взаємодій з навколишніми перепонами зростає як mn
Кількість призначень роботів до цільових позицій n!

start_to_goal

Призначення цілей роботам
\phi_{i,j}=\begin{cases}1\\0\end{cases}

Планування траєкторій повинно виконуватись у спільному просторі станів – O(en)
\mathbf{X}(t) = \begin{bmatrix}\mathbf{x}_1(t)\\\mathbf{x}_2(t)\\ \dots \\ \mathbf{x}_n(t)\\ \end{bmatrix}

\gamma(t):[t_o,t_f] \rightarrow \mathbf{X}(t)

Також необхідно вимагати, щоб найменша відстань між роботами становила не менше ніж подвоєний радіус.

Оптимальність

Вважаємо, що у нас є функціонал, що описує міру оптимальності і нам потрібно мінімізувати його.

Найскладнішими завданнями є призначення роботам цілей і планування траєкторій. І їх потрібно виконувати паралельно.

Чотири ключові ідеї:

  1. Паралельне призначення цілей і траєкторій
  2. Лідер-послідовник мережі
  3. Анонімність
  4. Спільне використання інформації
Категорії:Uncategorized

Кількість відмінних двійкових дерев з n вершинами

Кількість відмінних двійкових дерев з n позначеними вершинами

Для двійкового дерева з n вершинами, кількість ребер становить n-1. Отже, цю задачу можна звести до кількості варіантів розташування n-1 ребер у n вершин. Ребро можна зробити або лівим, або правим. Читати далі…

Категорії:Математика Позначки:

Навіщо потрібен make_unique

make_unique завжди варто і завжди правильно використовувати у коді тим більше, що він не має ніякого негативного впливу на швидкодію.
Читати далі…

Категорії:C++ Позначки:,