AngularJS Directives

51JBjv2qi5L
AngularJS Directives

IED: alternativa k NPM

ied
NPM je skvělý a určitě je jedním z hlavních důvodů, proč NodeJS zažívá takový boom.
V současné době se NPM prokousalo k 3. verzi, která řeší víceméně všechny neduhy 2. verze, jako je rychlost, adresářová struktura, velikost stahovaných dat a podobně.

IED

I když je NPM 3 opravdu daleko lepší než 2, stále má své rezervy. A na ně příjdete například v momentě, kdy si vyzkoušíte alternativního správce balíčků jako je IED, který je v rámci NodeJS plně kompatabilní, což znamená, že i přes velké změny v interní struktůře uložiště pozžívaných knihoven ve vaší aplikaci, poběží vše jak má.

Asi nejvýraznější výhodou je jeho opravdová rychlost při instalaci požadovaných balíčků specifikovaných v package.json. Otestoval jsem NPM i IED na ne příliš velké aplikaci, která používá cca 20 knihoven z NPM repozitáře. Pomocí NPM jsem měl nainstalováno za 24 sekund, ale s IED jen za 6. A to je opravdu fofr!

Protože 3. verze NPM už má flat model instalovaných balíčků, neni úspora místa a vše co s tím ouvisí (velikost stahovaných dat a podobně..) tak významné. Cca 44MB zabíral adresář node_modules instalovaný jak pomocí NPM i IED.

Asi jedinou nevýhodou na kterou jsem u IED narazil je absence příkazu udate, pro aktualizaci stažených, nainstalovaných NPM balíčků. NPM má příkaz npm command, který se pokusí aktualizovat všechny balíčky definované v package.json. A to dělá docela rychle: očekování nových verzí cca 20 balíčků v projektu trvalo cca 1.5 sekund. Dobrý.

NPM závislosti

Jednou z neskutečných výhod NodeJS je jeho NPM. Jedná se o dnes nejrychleji rostoucí balíčkovací systém. Repozitář obsajuje hotové balíčky snad na vše co vás napadne. Stačí jen stáhnout a použít.

No a pak se může hodit online grafická vizualizace závislostí jakéhokoliv baličku. Jedná se o webovou stránku, kde zadáte název NPM modulu a získáte pěkný obrázek s grafickým znázorněním závislosti zadaného balíčku. Výsledek můžete prohlížet i jako 3D model… 🙂

npm-zavislosti
Tohle je graf závislostí populárního balíčku express.

MongoDB dokumentace

server-density-and-mongodb
The Definitive Guide to MongoDB
The Definitive Guide to MongoDB, Third Edition
MongoDB The Definitive Guide
MongoDB The Definitive Guide, 2nd Edition
Scaling MongoDB
MongoDB in Action
MongoDB in Action, 2nd Edition
MongoDB and Python
50 Tips and Tricks for MongoDB Developers
MongoDB Applied Design Patterns
MongoDB Basics
Mongoose for Application Development
MongoDB Data Modeling
Practical MongoDB
MongoDB Cookbook, Second Edition

Best practice:
The best practice for a default Mongoose database connection is to open it when the application starts, and keep it open to be re-used. The connection should only need to be closed if your app is being shut down or restarted.

Mongoose provides a simple QueryBuilder interface for when you want to build up the query over multiple steps before executing it at a certain point in your code. Look at the example in the following snippet:

MongoDB and Mongoose do not support JOIN commands as MongoDB is not a relational database. Mongoose gives you an elegant way to achieve similar functionality by using population.

You can also populate multiple paths in the parent schema at once. Although, remember that each path is populated by a separate database query.

When populating data with a one-to-many relationship, you may well want to return a subset just like you might with a standard find operation. So far we’ve been using syntactic shortcuts for the populate method, but Mongoose does give you the option of sending a query object for population:

Facebook API Developers Guide

facebookapideveloperguide-130614152343-phpapp01-thumbnail-4

Facebook API Developers Guide

PhantomJS: web screen capture

phantomjs2

Už jste někdy potřebovali automaticky a sbírat náhledy webových stránek z prohlížeče (screenshoty)? Pak asi nejjednodušším řešením je použití PhantomJS, který, jak o sobě uvádí, je full web stack, no browser required řešením:

Výsledkem scriptu je sada PNG obrázků se screenshoty požadovaných webových stránek. Jedná se o rychlý návod jak na to. Samotný script by se dal ještě dopracovat…
PhantomJS se dá použí ke spoustě dalších věcí. Já jej používám např. i pro vytváření PDF dokumentů na webovém serveru.

OH MY JS

hero

Linux Timeline

Je neuvěřítelné kolik existuje různých linuxových distribucí… O to zajímavější je tento pěkný graf, zachycující co odkud pochází a jak se jednotlivé distra vyvíjela.

gldt1210

JavaScript and Node FUNdamentals

5178Ep21UkL._SX384_BO1,204,203,200_

Javascript And Node Fundametals

Mongoose a new Date()

Pokud v NodeJS používáte pro práci s databázi MongoDB knihovnu Mongoose a snažíte se ulehčit si práci při ukládání dat do collections skrze defaultní hodnotu prvku jako já:

Pak se dočkáte nemilého překvapení, že vám nebude čas v databázi sedět s reálným časem. Až jako já prohledáte všechny možnosti kde se na vašem serveru nastavuje timezone a zjsitíte, že máte vše OK, začnete pátrat kolem MongoDB, respektive přímo v Mongoose…

UTC

No a pak zjisíte, že váš čas je ukládán v UTC, a proto nesedí.

clock-change-time-dst

Řešení

Protože jsem v databázi měl opravdu skutečný čas, je potřeba zrušit hodnotu default v definici mongoose schematu vaší collection a datum s časem si vypočítat sám:

© 2016 pepa.holla.cz

Theme by Anders NorénUp ↑