Saturday, October 25, 2025

"Ім’я рози" Умберто Еко

 


тест на швидкість читання (промо)

Нотатки з книги:

“Досить усунути одне слово, щоб набув легкості цілий абзац.”

“Caput Mundi (Столиця світу (лат.))”

“У давнину мужі були гожі й високі, а тепер вони схожі на дітей або карликів, та се лиш одна з багатьох ознак занепаду світу, який старі-ється. Молодь не хоче здобувати знань, вченість занепадає, цілий світ ходить догори ногами, сліпі провадять сліпих і штовхають їх у прірву, птахи падають, ще не злетівши, осел грає на лірі, а воли танцюють, Марії вже не до вподоби споглядальне життя, а Марті — діяльне, Лія безплідна, а в Рахилиних очах - розкошолюбство, Катон же вчащає до лупанаріїв. Усе зійшло з путі істинної. Дяка Всевишньому, що у часи ті од свого вчителя я перейняв спрагу знань і відчуття праведної путі, яке не губиться навіть тоді, коли стежка вельми звивиста.”

“ліпоту вселенної явлено нам не лише як єдність у розма-ітості, але й як розмаїтість у єдності.”

“Вісім — число досконалості кожного чотиригранника, чотири — число Євангелій, пʼять — число просторів світу, сім — число дарів Святого Дужа.”

“Оце таким був мій учитель. Він не тільки вмів читати велику книгу природи, але й розумівся на тім, як ченці читали писані книги і мислили за їх посередництвом. І дар сей, як ми побачимо, немало прислужився йому в наступні дні.”

“Монастир без книг… це немов місто без багатств, фортеця без війська, кухня без начиння, стіл без наїдків, сад без зілля, лука без квітів, дерево без листя (лат.). Цитата, ймовірно, взята з твору Якоба Лоубера з картезіанського монастиря в Базелі (кін. XV ст.).”

“Під багатьма оглядами він є — чи був колись - великим чоловіком. Але саме тому він дивний. Лише малі люди здаються нормальними. У бертин міг би стати одним з тих єретиків, яких він допомагав палити, або ж кардиналом святої Римської Церкви. Він упритул підійшов до обох цих крайнощів. Коли я розмовляю з Убертином, мені здається, що пекло - це лише погляд на рай з іншого боку.”

“Дуже важливо, адже ми тут намагаємось зʼясувати щось, що сталося у громаді, яка живе книгами, між книгами, задля книг, а отже важливо й усе те, що говориться тут про книги.”

“Папа. Ці міста… кожне з них наче окреме королівство… А королями їхніми є купці. А їхньою зброєю є гроші.”

“Як каже стародавне прислівʼя, перо тримають лише три пальці, але працює все тіло. І все тіло болить.”

“Священна війна — се однаково війна. Тому, мабуть, священних війн бути не повинно.”

“Я почував себе отупілим від сну, бо денний сон — то немов плотський гріх: що більше його, то більше його хочеться, та однаково почуваєш себе нещасливим, ситим і спраглим водночас.”

“затям собі, що першим обовʼязком доброго інквізитора є обовʼязок підозрювати насамперед тих, хто здається щирим.”

“молоді, схоже, мають більшу потребу в сні, ніж старі, які вже виспалися досхочу, а тепер готуються заснути на цілу вічність.”

“правда неподільна, вона сяє сліпучою яснотою, яка не дає нам пере-половинити її — чи то боронячи свої інтереси, чи то через сором.”

“любов може шкодити тому, хто любить, коли вона надмірна.”

“Книги існують не для того, щоб у них вірити, а щоб їх вивчати. Нам слід замислюватись не над тим, що говорить та чи та книга, а над тим, що вона означає, і це чудово знали давні коментатори священних книг.”

“Божевільні та діти завжди кажуть правду”

“Добро книги в тому, щоб її читали. Книга складена із знаків, які говорять про інші знаки, а ті вже говорять про речі. Якщо її не читають, книга містить знаки, які не творять понять, а отже вона мертва.”

“Сон — це теж письмо, і чимало написаного є не чим іншим, як снами.”

“Подиву гідна твердиня, — мовив він, — у її пропорціях криється золоте правило, яке було закладене в будові ковчега. Складають її три поверхи, бо три — се число тройці, троє було ангелів, що відвідали Авраама, три дні прожив Йона у череві великої риби, три дні Ісус і Лазар провели у гробі; тричі Христос просив Отця, щоб той віддалив од нього чашу сю гірку, тричі Христос усамітнювався з апостолами, щоб помолитися. Тричі Петро відрікся від Нього і тричі Він являвся своїм учням після воскресення. Три є богословські чесноти, три священні мови, три частини душі, три різновиди розумних створінь — ангели, люди і демони, три є відміни звуку — vox, flatus, pulsus (Голос, дихання, биття), три є доби в людській історії — до закону, під час закону і після закону.”

“Але й квадратна форма, — вів далі настоятель, — багата на духовну науку. Четверо є сторін світу, пір року, стихій, четвірку творять тепло, холод, волога і посуха; народження, зростання, зрілість і старість; небесні, земні, повітряні і водні різновиди тварин; барви, які складають веселку, і число років, які минають від одного високосного року до другого. Звісно, — мовив Вільям, — якщо ж до трьох додати чотири, буде сім, а це наймістичніше число, а коли три помножити на чотири, буде дванадцять, число апостолів, а дванадцять на дванадцять дасть сто сорок чотири, а це число вибраних.”

“Це б мало мене здивувати: іти відпочивати, коли в нас лишалося всього лиш кілька годин, не виглядало мудрим рішенням. Але я вже добре знав свого навчителя. Що більше відпочивало його тіло, то більше працював розум.”

“Бійся, Адсо, пророків і тих, хто готовий померти за істину, бо зазвичай вони чинять так, що багато інших помирають разом з ними, часто ще до них, а іноді й замість них.”

“Лад, що його уявляє собі наш розум, це немов сіть або ж драбина, яка слугує для того, щоб кудись дістатися. Але опісля цю драбину слід відкинути, бо ми бачимо, що хоч вона й стала нам у пригоді, сама вона позбавлена сенсу, Er muoz gelichesame die leiter abewerfen, sô er an ir ufgestigen ist… (Треба відкинути драбину, піднявшись по ній (старонім.))”

Покращуй пам’ять, читай швидше, тренуй фокус - за допомогою програми для тренування мозку Readlax. (промо) 

Friday, October 10, 2025

"You don't Know JS: Types & Grammar" Kyle Simpson

 


Book notes:

“An ECMAScript language type corresponds to values that are directly manipulated by an ECMAScript programmer using the ECMAScript language. The ECMAScript language types are Undefined, Null, Boolean, String, Number, and Object.”

“JavaScript defines seven built-in types: • null • undefined • boolean • number • string • object • symbol-added in ES6! (All of these types except object are called “primitives.”)”

“The typeof operator inspects the type of the given value, and always returns one of seven string values surprisingly, there’s not an exact 1-to-1 match with the seven built-in types we just listed:”

typeof undefined 	===  "undefined"; 	// true
typeof true 		===  "boolean"; 	// true
typeof 42 		===  "number"; 	// true
typeof "42" 		===  "string"; 		// true
typeof { life: 42 }	===  "object"; 	// true
typeof Symbol() 	===  "symbol"; 	// true
typeof null 		===  "object"; 	// true

typeof null === "object" It would have been nice (and correct!) if it returned “null”, but this original bug in JS has persisted for nearly two decades,”

“In JavaScript, variables don’t have types —values have types. Variables can hold any value, at any time… A variable can, in one assignment statement, hold a string, and in the next hold a number, and so on.”

“Variables that have no value currently actually have the undefined value. Calling typeof against such variables will return “undefined””

var a;
a; // undefined
b; // ReferenceError: b is not defined
var a;
typeof a; // "undefined"
typeof b; // "undefined"

“Many developers will assume “undefined” and “undeclared” are roughly the same thing, but in JavaScript, they’re quite different. undefined is a value that a declared variable can hold. “Undeclared” means a variable has never been declared. JavaScript unfortunately kind of conflates these two terms, not only in its error messages (“ReferenceError: a is not defined”) but also in the return values of typeof, which is “undefined” for both cases.”

“Using delete on an array value will remove that slot from the array, but even if you remove the final element, it does not update the length property, so be careful!”

“While the slot appears to have the undefined value in it, it will not behave the same as if the slot is explicitly set (a[1] = undefined).”

“There will be occasions where you need to convert an array-like value (a numerically indexed collection of values) into a true array, usually so you can call array utilities (like indexof(..)concat(..)forEach(..), etc.) against the collection of values. For example, various DOM query operations return lists of DOM elements that are not true arrays but are array-like enough for our conversion purposes.”

“One very common way to make such a conversion is to borrow the slice(..) utility against the value… As of ES6, there’s also a built-in utility called Array. from(..) that can do the same task:”

“Strings do have a shallow resemblance to arrays-they are array-likes, as above. For instance, both of them have a length property, an indexof(..) method (array version only as of ES5), and a concat(..) method:”

“JavaScript strings are immutable, while arrays are quite mutable.”

“JavaScript has just one numeric type: number. This type includes both “integer” values and fractional decimal numbers.”

“Like most modern languages, including practically all scripting languages, the implementation of JavaScript’s numbers is based on the “IEEE 754” standard, often called “floating-point.” JavaScript specifically uses the “double precision” format (aka “64-bit binary”) of the standard.”

“the toFixed (..) method allows you to specify how many fractional decimal places you’d like the value to be represented with”

toPrecision(..) is similar, but specifies how many significant digits should be used to represent the value:”

“Starting with ES6 + strict mode, the 0363 form of octal literals is no longer allowed (see below for the new form).”

“For the undefined type, there is one and only one value: undefined. For the null type, there is one and only one value: null. So for both of them, the label is both its type and its value. Both undefined and null are often taken to be interchangeable as either “empty” values or “non” values. Other developers prefer to distinguish between them with nuance.”

null is an empty value.”

undefined is a missing value.”

undefined hasn’t had a value yet.”

null had a value and doesn’t anymore.”

“The expression void ___“voids” out any value, so that the result of the expression is always the undefined value. It doesn’t modify the existing value; it just ensures that no value comes back from the operator expression:”

var a = 42;
console.log(void a, a); // undefined 42

“Simple values (aka scalar primitives) are always assigned/passed by value-copy: null, undefined, string, number, boolean, and ES6’s symbol.”

“Compound values— objects (including arrays, and all boxed object wrappers - see Chapter 3) and functions-always create a copy of the reference on assignment or passing.”

slice(..) with no parameters by default makes an entirely new (shallow) copy of the array.”

"In JavaScript, arrays are simply numerically indexed collections of any value type. strings are somewhat “array-like, but they have distinct behaviors and care must be taken if you want to treat them as arrays. Numbers in JavaScript include both “integers” and floating-point values. Several special values are defined within the primitive types. The null type has just one value, null, and likewise the undefined type has just the undefined value. undefined is basically the default value in any variable or property if no other value is present. The void operator lets you create the undefined value from any other value. numbers include several special values, like NaN (supposedly “Not a Number,” but really more appropriately “invalid number”); +Infinity and - Infinity; and -0. Simple scalar primitives (strings, numbers, etc.) are assigned/passed by value-copy, but compound values (objects, etc.) are assigned/ passed by reference-copy. References are not like references/pointers in other languages they’re never pointed at other variables/references, only at the underlying values.”

“Here’s a list of the most commonly used natives: • String() • Number () • Boolean() • Аггау() • Object() • Function) • RegExp() • Date() • Error () • Symbol ()”

“natives are actually built-in functions.”

“Regular expressions defined in the literal form (/^a*b+/g) are strongly preferred, not just for ease of syntax but for performance reasons-the JS engine precompiles and caches them before code execution. Unlike the other constructor forms we’ve seen so far, RegExp(…) has some reasonable utility: to dynamically define the pattern for a regular expression:”

var name = "Kyle";
var namePattern = new RegExp( "||b(?:" + name + ")+|\b", "ig" );
var matches = someText.match(namePattern);

“There are several predefined symbols in ES6, accessed as static properties of the Symbol function object, like Symbol.createSymbol.iterator

Symbols are not objects, they are simple scalar primitives.

“JavaScript provides object wrappers around primitive values, known as natives (String, Number, Boolean, etc). These object wrappers give the values access to behaviors appropriate for each object subtype (String#trim() and Array#concat(…)).”

“If you have a simple scalar primitive value like “abc” and you access its length property or some String.prototype method, JS automatically “boxes” the value (wraps it in its respective object wrapper) so that the property/method accesses can be fulfilled.”

“Converting a value from one type to another is often called “type casting,” when done explicitly, and “coercion” when done implicitly”

“in JavaScript, most people refer to all these types of conversions as coercion, so the way I prefer to distinguish is to say “implicit coercion” versus “explicit coercion.””

var a = 42;
var b = a + ""; // implicit coercion
var c = String(a); // explicit coercion

“Some examples are undefineds, functions, (ES6+) symbols, and objects with circular references (where property references in an object structure create a never-ending cycle through each other). These are all illegal values for a standard JSON structure, mostly because they aren’t portable to other languages that consume JSON values.”

“An optional second argument can be passed to JSON.stringify(..) that is called replacer. This argument can either be an array or a function. It’s used to customize the recursive serialization of an object by providing a filtering mechanism for which properties should and should not be included, in a similar way to how toJSON() can prepare a value for serialization.”

“Remember, JSON.stringify(..) is not directly a form of coercion. We covered it here, however, for two reasons that relate its behavior to ToString coercion: 1. string, number, boolean, and null values all stringify for JSON basically the same as how they coerce to string values via the rules of the ToString abstract operation. 2. If you pass an object value to JSON.stringify(..), and that object has a toJSON() method on it, toJSON() is automatically called to (sort of) “coerce” the value to be JSON-safe before stringification.”

“we get the following as the so-called “falsy” values list: • undefined • null • false • +0, -0, and NaN • ""

Remember: a value is truthy if it’s not on the falsy list.

“While not technically coercion itself (since the type doesn’t change!), using bitwise operators (like | or ~) with certain special number values produces a coercive effect that results in a different number value.”

“The ~ operator first “coerces” to a 32-bit number value, and then performs a bitwise negation (flipping each bit’s parity).”

“Technically, if (~a.indexOf(..)) is still relying on implicit coercion of its resultant 0 to false or nonzero to true. But overall, ~ still feels to me more like an explicit coercion mechanism, as long as you know what it’s intended to do in this idiom. I find this to be cleaner code than the previous >= 0/== - 1 clutter.”

“Truncating bits. There’s one more place ~ may show up in code you run accross: some developers use the double tilde ~~ to truncate the decimal part of a number (i.e., “coerce” it to a whole number integer). It’s commonly (though mistakenly) said that this is the same result as calling Math.floor(..). How ~~ works is that the first ~ applies the ToInt32 “coercion” and does the bitwise flip, and then the second ~ does another bitwise flip, flipping all the bits back to the original state. The end result is just the ToInt32 “coercion” (aka truncation). However, ~~ needs some caution/clarification. First, it only works reliably on 32-bit values. But more importantly, it doesn’t work the same on negative numbers as Math.floor(..) does!”

“Just as with all other advice here, use ~ and ~~ as explicit mechanisms for “coercion” and value transformation only if everyone who reads/writes such code is properly aware of how these operators work!”

var a = "42";
var b = "42px";
Number (a); // 42
parseInt(a); // 42
Number ( b); // NaN
parseInt( b); // 42

“Don’t forget that parseInt(..) operates on string values. It makes absolutely no sense to pass a number value to parseInt(..). Nor would it make sense to pass any other type of value, like true, function (){..}, or [1,2,3]… so never use parseInt(..) with a non-string value.”

“As of ES5, parseInt(..) no longer guesses. Unless you say other-wise, it assumes base-10. That’s much nicer. Just be careful if your code has to run in pre-ES5 environments, in which case you still need to pass 10 for the radix.”

“Implicit coercion refers to type conversions that are hidden, with nonobvious side effects that implicitly occur from other actions. In other words, implicit coercions are any type conversions that aren’t obvious (to you).”

“explicit coercion of a symbol to a string is allowed, but implicit coercion of the same is disallowed and throws an error.”

“symbol values cannot coerce to number at all (throws an error either way), but strangely they can both explicitly and implicitly coerce to boolean (always true).”

“The correct description is: “== allows coercion in the equality comparison and === disallows coercion.”

“If you want coercion, use = loose equality, but if you don’t want coercion, use === strict equality.”

NaN is never equal to itself”

+0 and -0 are equal to each other”

“In the ES5 spec, clauses 11.9.3.4-5 say: 1) If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y). 2) If Type(x) is String and Type(y) is Number, return the result of the comparison ToNumber (x) == Y.”

“Let’s again quote the spec, clauses 11.9.3.6-7: 1) If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y. 2) If Type(y) is Boolean, return the result of the comparison x == ToNumber (y).”

“quoting the ES5 spec, clauses 11.9.3.2-3: 1) If x is null and y is undefined, return true. 2) If x is undefined and y is null, return true.”

var a = null;
var b;
a == b; // true
a == null; // true
b == null; // true

“If an object/function/array is compared to a simple scalar primitive (string, number, or boolean), the ES5 spec says in clauses 11.9.3.8-9: 1) 1. If Type(x) is either String or Number and Type(y) is Object, return the result of the comparison x == ToPrimitive (y). 2) If Type(x) is Object and Type(y) is either String or Number, return the result of the comparison ToPrimitive(x) == y.”

"0" == false; // true -- UH OH!
false == 0; // true -- UH OH!
false = ""; // true -- UH OH!
false == []; // true -- UH OH!
false == {};// false
"" ==  0; // true -- UH OH!
"" ==  []; // true -- UH OH!
0 == []; // true -- UH OH!
[] == ![]; // true
2 == [2]; true
"" == [nulll]; // true
0 == "\n" ; // true

“When ++ is used in the prefix position as ++a, its side effect (incrementing a) happens before the value is returned from the expression, rather than after as with a++.”

speed reading practice (promo)

Thursday, October 9, 2025

"Емпіреї. Книга 1. Четверте крило" Ребекка Яррос

 



Нотатки з книги:

Дракон без свого вершника — це трагедія. Вершник без свого дракона - це смерть.

“Слабкі тут не виживають, особливо у Квадранті вершників. Дракони про це подбають.”

“У двадцять шість Міра — молодша версія нашої мами. Висока, із сильними, потужними мʼязами, підтягнутими роками спарингів і сотнями го-дин, проведених на спині свого дракона. Її шкіра майже світиться здоровʼям, а золотисто-каштанове волосся коротко підстрижене для бою в тому самому стилі, що й у мами. Однак більше, ніж зовнішність, вона несе в собі ту саму зарозумілість, непохитне переконання, що її місце в небі. Вона — вершниця наскрізь.”

“Я вже не вперше чую, як вона проклинає хворобу, що ледь не вбила її під час вагітності мною, або бібліотеку, яку тато зробив для мене другою домівкою, коли мама викладала тут, у Басґіаті, а він був писарем.”

“Твій мозок — найкраща зброя. Перехитри їх”

“Немає такого поняття, як шахрайство, коли підіймаєшся на вежу. Є тільки виживання і смерть.”

“Це може прозвучати різко, але не шукай там дружби, Вайолет. Створюй союзи.”

“Твій розум уже знає відповідь, тож просто заспокойся і дай йому згадати.”

“Яка моя найкраща порада? Не вмирайте.”

“Коли здається, що вони ось-ось пролетять над головою, дракони здіймаються вертикально, хльостаючи повітря величезними напівпрозорими крилами, і зависають, а пориви вітру від їхніх крил такі потужні, що я ледь не подаюся назад. Вони приземляються на зовнішню напівкруглу стіну. Луска на їхніх грудях брижиться від руху, а гострі, як лезо, пазури впиваються в край стіни з обох боків. Тепер я розумію, чому стіни три метри завтовшки. Це не барʼєр. Край фортеці — це кляті сідала.”

“Мама часто казала: щойно дозволиш емоціям вступити в бій — ти вже програла.”

“У мене перехоплює подих, і тіло теплішає, о, зрадлива суко. Нагадую собі, що мене не тягне до токсичних чоловіків, і все-таки: ось вона я, і мене тягне. І то з першої секунди, як його побачила, якщо бути чесною.”

“Ти повинна зосередитися на речах, які можуть тебе вбити, щоб знайти спосіб не померти,”

“Ти люто захищала найменшого. А сила мужності важливіша за фізичну силу.”

“— Звʼязки Терна дуже потужні, як для пари, так і для вершника, через те що він такий могутній. Втрата останнього вершника ледь не вбила його, що водночас мало не вбило Стейл. Життя подружніх пар — це… — Залежність одне від одного, я знаю.”

Немає нічого святішого за Архів. Навіть храми можна перебудувати, але книжки не можна переписати.”

“Справедливість не завжди милосердна.”

“Усе, чого вас навчають у Басгіаті, — це теорія. Ви аналізуєте минулі напади й вивчаєте ті самі… теоретичні бойові маневри. Однак тут не завжди все йде за планом. Тож чому б нам не поговорити про те, як усе може піти не так, аби ви знали, що робити в цій ситуації, а не сперечалися, чи позиція могла бути втрачена?”

“Однак Міра каже правду: є безліч способів знищити когось, не відбираючи фізичного життя.”

“Памʼятай, що фольклор передається від покоління до покоління, щоб ми знали про наше минуле. Якщо ми втрачаемо фольклор - ми втрачае-мо зв’язки з нашим минулим. Достатньо лише одного загубленого покоління, щоб змінити історію - навіть стерти її.”

“Коли ми доходимо до двору, вечірка вже у розпалі. Тут суміш блідо-блакитних форм цілителів, кремових тунік писарів і темно-синіх уніформ пі-хоти. Вони яскраво переважають розкидані де-не-де парадні чорні форми вершників.”

“Цей твій розум дуже сексуальний.”

“Нездатність контролювати силу потужної печаті так само небезпечна для вершника — і для всіх, хто перебуває поруч, — як і її непроявлення.”

“У драконів — вершники, а у грифонів - льотчики.”

“Брехня втішає. Правда болить.”

“Одне покоління, щоб змінити текст. Одне покоління, щоб його викладати. І коли підростає наступне, то фальсифікація вже стає історією.”

“Ми можемо жити як боягузи, а можемо загинути як вершники.”

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

вправи для швидкочитання (промо) 

"Ім’я рози" Умберто Еко

  тест на швидкість читання (промо) Нотатки з книги: “Досить усунути одне слово, щоб набув легкості цілий абзац.” “Caput Mundi (Столиця сві...