101

(46 відповідей, залишених у Бази даних)

Зверніть увагу, що я не використовував left join.

102

(46 відповідей, залишених у Бази даних)

Якщо ви не проти, можу дати поради:

1. якщо у вас поле з id, то воно повинно містити закінчення id. Тобто в таблиці dialogs поля повинні називатись first_user_id та second_user_id.

2. якщо у вас табличка містить лише поля id та name (можливо ще description), то таку таблицю краще позначати префіксом dict_ (від англійського dictionary - словник).

3. якщо у вашій табличці міститься лише мапінг id між різними таблицями, то таку таблицю краще позначати префіксом map_

4. якщо у вашій табличці містяться історичні дані, наприклад, статистика перегляду вашого сайту, то краще її позначати префіксом hist_ (від англійського - history - історія)

Звичайно ж треба працювати з першим варіантом. Спробуйте такий варіант:

[code=sql]-- Спочатку виводите діалоги, де ви запрошували когось.
-- Тобто під first_user - це ви, отже з таблицею users вам треба з'єднуватись по second_user
select
    u.name as second_user_name
from dialogs as d
    join user as u
        on d.second_user = u.id
where d.first_user = 1
    and d.second_user = 2

-- Об'єднує запити (у них обо'язково повинна співпадати кількість полів)
union all

-- Тепер виводите діалоги, де вас запрошували.
-- Тобто під first_user - ваш співрозмовник, отже з таблицею users вам треба з'єднуватись по first_user
select
    u.name as second_user_name
from dialogs as d
    join user as u
        on d.first_user = u.id
where d.first_user = 2
    and d.second_user = 1[/code]

103

(157 відповідей, залишених у Ваші проєкти)

Підтримка codepen до речі існує.

Ось так можна вставити таймер з codepen, змайстрований нашим Анатолієм =)

```
codepen:http://codepen.io/Anatolij/pen/bVxxEq/
```

104

(157 відповідей, залишених у Ваші проєкти)

0xDADA11C7 написав:

Воно нікуди не свистітиме - таблиця розтягується на розмір екрану, а мені треба навпаки - декілька таких таблиць поставити поряд, до того ж моноширинного шрифту нема, а без цього воно сунеться не так і не туди.
В моноширинному відображенні зірочки вже екранувати не потрібно, проте відступи все одно скорочуються до одного, що унеможливлює відображення вищенаведеної таблиці по-людськи.

В такому разі роблять як треба локально і вставляють картинку.

105

(157 відповідей, залишених у Ваші проєкти)

Так, просту табличку з маркдаун-розміткою можна зробити (але не знаю як зробити по кілька рядків в одній комірці):

|    "0"  |    Двійк.    | Шістн. |
|---------|---------------|----------|
|\*\*\*\* | 11110000 | 0xF0   |
|\*     \* | 10010000 | 0x90   |
|\*     \* | 10010000 | 0x90   |
|\*     \* | 10010000 | 0x90   |
|\*\*\*\* | 11110000 | 0xF0   |

Кожну зірочку екрановано, бо це типу як розмітка в маркдауні.

Підтримується майже усе, що є в Github markdown, окрім html, смайликів та чисто github-специфіки, типу конвертувати github issue в короткий лінк і т.д.

106

(157 відповідей, залишених у Ваші проєкти)

Так, HTML покищо не підтримується. А що хіба не можна обійтись однією макрдаун-розміткою?

Треба буде колись приділити час цьому, подумати як так дозволити HTML щоб він не міг поламати іншу розмітку сайта. Думаю це не просто зробити.

107

(52 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

У гугла є свій JavaScript-рендерер, але рекомендується використовувати Angular Universal.

З коробки Angular v2+ не дружелюбний до SEO. Навіть гугл зараз на моєму сайті (Angular 4) бачить єдиний вміст з написом "завантаження..." на будь-якій сторінці.

Сам не користувався ще Angular Universal, але коли завершу писати основну функціональність свого проекту, то спробую.

108

(52 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Не ведіться на один лише галас, піднятий на різних блогах, що vuejs - зе бест. На rabota.ua зараз три вакансії. Не перестаю повторювати - кількість вакансій це майже ідеальний показник перспективності, бо швидше за все роботодавці вже зробили за вас аналіз що краще вибирати.

В попередньому пості видно що ReactJS найдинамічніше росте за останні два місяці. На скільки я зрозумів із різних обзорів, ReactJS має нижчий вхідний поріг, тому бажаючих його використовувати більше. Але Angular таки більш комплексний, більш монолітний, більш систематичний і т.д.

109

(53 відповідей, залишених у Робота)

В аутсорс-конторі попрацював два місяці і звільнився нафіг за власним бажанням.

Таких жорстких гівнокодерів не очікував зустріти в компанії, котра більше 10 років на західному ринку, і в котрої десь 300-500 людей персоналу.

Якщо коротко - гівнокодери мене намагались вчити як правильно гівнокодити.

Прикинте, тім лід (!) забороняє писати коментарі в коді, каже що код має бути "самоописним". Кажу - добре, погоджуюсь із самоописним кодом, але хіба його не можна доповнювати коментарями? - Ні не можна, каже, бо коментарі стають застарілими. - Жесть!

Тім лід допустив купу відхилень від різного роду конвеншинів, починаючи від "іменувати проперті й методи - з малої літери, класи, інтерфейси - з великої" і закінчуючи чисто ангуларівським "компоненти повинні закінчуватись на Component, сервіси на Service, директиви на Directive" і т.д.

Кажу їм - у вас же проект не консистентний, а мене питають - для чого тобі та консистентність. Уявляєте!?

Один із програмістів вважає, що запис типу object['property'] є більш естетичним, причому в даному випадку ніколи не потребується в проперті мати якісь спецсимволи, що не дозволені у літеральному записі object.property. Ще б нічого, коли б він сам цим користувався собі мовчки, а так каже щоб усі так писали. І тім лід такого роду "естетику" пропускав... до того моменту поки не прийшов я =). Я усе навіг переписав під object.property, ще й пришлось переконувати тім ліда що використання такого варіанта є зручнішим і рефакторинг кращим...

На місці тестів у них бутафорія... І т.д.

Коротше жесть, хоча й платять досить пристойно й умови праці прекрасні.

Звільнився, бо іншого проекта у них на Angular v4+ не було. Не можу я терпіти гівнокодерів навіть за гарні гроші.

От вам і рев'ю кода, і досвідчені колеги, які щось начебто повинні навчити "фрілансера" (тобто мене), котрий вчився кодити на open source проектах на гітхабі.

110

(52 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

ktretyak 15.05.2017 15:59:49 написав:

Значно більш показовий аргумент - кількість вакансій:
JavaScript - 595 вакансій
AngularJS - 261 вакансія
ReactJS - 153 вакансії
Angular 2 - 28 вакансій.
...

ktretyak 10.06.2017 08:52:26 написав:

JavaScript - 690 вакансій (+ 16%)
AngularJS - 323 вакансії (+ 24%)
ReactJS - 141 вакансія (- 8%)
Angular 2 - 41 вакансія (+ 46%)

ktretyak 02.09.2017 16:17:19 написав:

JavaScript - 732 вакансії (+ 6%)
AngularJS - 350 вакансій (+ 8%)
ReactJS - 241 вакансія (+ 71%)
Angular 2 - 51 вакансія (+ 24%)

JavaScript - 800 вакансії (+ 9%)
AngularJS - 384 вакансій (+ 10%)
ReactJS - 284 вакансія (+ 18%)
Angular 2 - 52 вакансія (+ 2%)

111

(26 відповідей, залишених у Шукаю роботу)

tim, якщо не секрет, в якому діапазоні ви шукаєте собі ЗП? Ви це робите на стільки довго, що схоже ви шукаєте не там, або не те.

112

(52 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Дуже сумніваюсь що в React є утиліта для тестування запитів на бекенд. А у Angular 4.3.0+ є HttpClientTestingModule - мега зручна річ! Рекомендую.

113

(18 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Ось такий код не пропускає TypeScript:

case A:
    smth=true;
case B: //fallthrough - тут продовжується попередній код!
case C: //fallthrough
    smth_else = true;
    break;
case D: 
    smth_other = false;
    break;

Погоджуюсь, що тут дуже легко заплутатись, я б такого точно не написав.

Стосовно поліморфізму, яким можна замінити switch-case, то я щось сходу так і не уявив що мається на увазі.

Уточнення: у моєму прикладі вище, код написано на TypeScript, а DownloadType має тип enum.

114

(52 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

ktretyak 15.05.2017 15:59:49 написав:

Значно більш показовий аргумент - кількість вакансій:
JavaScript - 595 вакансій
AngularJS - 261 вакансій
ReactJS - 153 вакансії
Angular 2 - 28 вакансій.
...

ktretyak 10.06.2017 08:52:26 написав:

JavaScript - 690 вакансій (+ 16%)
AngularJS - 323 вакансії (+ 24%)
ReactJS - 141 вакансія (- 8%)
Angular 2 - 41 вакансія (+ 46%)

JavaScript - 732 вакансій (+ 6%)
AngularJS - 350 вакансії (+ 8%)
ReactJS - 241 вакансія (+ 71%)
Angular 2 - 51 вакансія (+ 24%).

115

(18 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

elektryk, не могли б ви хоча б коротко описати й показати в яких саме випадках можна зробити одне й теж за допомогою if/else та try/catch?

Ви знаєте переклад цих ключових слів з англійської? Якщо буквально перекласти ці слова на українську, то if/else виглядатиме приблизно так:

якщо (одне === іншому) {
  // виконати якусь дію в цьому блоці
} інакше {
  // виконати іншу дію
}

а try/catch так:

спробувати {
  // виконати якусь дію в цьому блоці
} зловити (помилку){
  консоль.записати(помилку)
}

Стосовно заміни в JavaScript switch/case на if/else, то до недавнього часу я завжди використовував if/else, до поки мені не прийшлось працювати в команді розробників і миритись з особливостями написання ними коду. Я побачив де можна дійсно зручніше використовувати switch/case:

// Setting availability of software groups.
switch (detail.DownloadType) {
    case DownloadType.Undefined:
        break;
    case DownloadType.Core:
    case DownloadType.Agent:
    case DownloadType.OfflineLinuxAgent:
        this.hasApplications = true;
        break;
    case DownloadType.LocalMountUtility:
    case DownloadType.DocRetrieverForSharePoint:
    case DownloadType.LinuxLiveDVD:
    case DownloadType.ApplianceRUU:
        this.hasUtilities = true;
        break;
    case DownloadType.AddOnForKaseya:
    case DownloadType.DataProtectionPlugin:
        this.hasPlugins = true;
        break;
    case DownloadType.AzureReplicationTargetUpdater:
        this.hasScripts = true;
        break;
}

Тобто switch/case зручно використовувати, коли є декілька варіантів умови для одного блоку.

116

(149 відповідей, залишених у Інше)

Torbins написав:

статті - цілковита пропаганда

Цілковита пропаганда - це коли дають свою власну оцінку або абсолютно без аргументів, або маніпулюють аргументами "притягуючи їх за вуха", щоб усе здавалось правдоподібним. Хоча, звичайно ж, усе можна списати на "маніпуляції аргументами" навіть тоді, де цього немає.

Якщо по-вашому там "цілковита пропаганда", то вам не буде складно навести пару тез, де видно, що автор намагається маніпулювати фактами. Так же?

117

(149 відповідей, залишених у Інше)

P.Y. написав:

Поки хостів було мало, це всіх влаштовувало, але потім виникла потреба в чомусь менш ресурсоємному — повна база доменних імен не зберігається ні на клієнтських комп'ютерах, ні навіть на окремих DNS-серверах, а розподілена між ними.

Ви точно нічого не плутаєте? Мапінг між IP-адресою і назвою хоста - це вам не усі транзакції за усю історію, це на декілька порядків менше інформації... мені так інтуїтивно здається. Тому один DNS-сервер, швидше за все, знає про усі на світі зареєстровані домени та їхні відповідні адреси.

118

(149 відповідей, залишених у Інше)

Блокчейн це не просто гальмо Біткойна, це його сама центральна й невід'ємна фішка, це його ядро. А раз це так, то самі розумієте чим це грозить...

119

(149 відповідей, залишених у Інше)

А ось ще одна стаття, її написав:

Malware Expert, Anti-Malware Technologies Development, Kaspersky Lab

Він теж бачить багато спільного між системою біткойнів і фінансовою пірамідою.

120

(149 відповідей, залишених у Інше)

Може ще хто не прочитав, корисна стаття для свідків біткойна: https://домен агресора/company/kaspersky/blog/336036/