This blog post might be usefull for people learning Phoenix 1.3 with the Programming Phoenix book.
There are many changes from the older phoenix version for which this book has been written and the yet not published newer book "Programming Phoenix 1.3" which should be here untill 2018.
Many changes have been implemented in Ecto, Elixir and also Phoenix so often I needed to go deep into the source and API documentation (which is useful because the learning curve is better).
If you also followed this, I recommend always searching on the following page if you have issues
The Models folder and the web folder have disappeared. The models folder can be replaced by creating folders and storing data for your "schemas", "models" elswhere .
The web has become <yourapp>_webNOTE:
Ecto validate_length does NOT verify if something is required, so it;s always best to do something like the following by including validate_required
struct|> cast(params, [:name, :username])|> validate_required([:name, :username])|> validate_length(:username, min: 3 ,max: 20)
This list of outdated examples might also help.
I intend to update this post once I restart reading the book alongside the official documentation for 1.3 so I get a better grasp on everything
Using secure hashing implementations is a must in today's ever changing cyberspace.
Even as a non-IT client it's important to know a little bit about how the software works around you.
This will make you more security conscious. Knowledge breeds wisdom.
What are hashes?
Hashes are algorithms (a mathematical way) to transform data into a unique "signature" value. They are used all around you:
- Hardware uses small checksums when any communication occurs. Think about transferring data to your
- Networking uses checksums and hashes for data integrity and verification.
- Software uses hashes to store passwords and sensitive data so it's not plaintext.
- Cryptography to make data secure
If you don't know what LostMVC was please read What was LostMVC - Web Framework
I've decided to officialy abandon the LostMVC project I have been working in the past 2 to aprox 3 years. (From 2013 to 2016) (Github: https://github.com/Enotsoul/codru-web-framework)
Let me first tell you that this has been a formidable learning experience. I've spent 1 to 3 days per week working on it.
Reviewing my time tracking software with both Project Hamster and my own Timetracking software built with this framework estimated around 1500 hours spent on this project and all subprojects. Including virtual machine management, installation, management, updates, debugging etc.
For some time I was sad that I spent so much time working on such a big project and I wanted to abandon it earlier. But since i've created multiple subprojects based on it it had been a hard choice.
So I felt that I wasted time on it instead of working on other projects. I was highly discouraged.
But I've learned some valuable lessons which I only had read about in the past. Knowledge is the key but practice is the palace.
I've been inspired to think that all great inventors and geniuses had such experiences.
If you read the life of Leonardo da Vinci you will stumble upon many "failed" experiments.
Maintaining such a huge process alone is cumbersome and error prone.
Everytime a new third party library comes out you have 2 options.
Use the old one and miss out improvements or security fixes but have working code
Use the new one and spend a lot of time fixing issues, writing new testcases, modifying the whole system again.
Updating sub systems.. Freaking out because an existing project crashed even though you had TESTS and a full PDLC.
LostMVC was a project I've worked on in my spare time between 2014 and 2016.
It's essentialy a web framework built from scratch using Tcl and the NX/NSF Next Scripting Framework https://next-scripting.org/xowiki/
built and optimized specially for NaviServer.
NSF and NX
To understand the full potential of LostMVC and Codru we first have to analyze the Next Scripting Framework for which I've written more on a different page.
NaviServer has a long history, longer than Apache's history. NaviServer was built by NaviSoft way back in 1993, acquired by AOL in 1995
It combines everything a modern wbeserver needs with builtin functions. It's support for Tcl as the per defautl programming language.
Although one could easily add PHP.
One of it's cool features is a pooled database connection system which maintains a pool of connections for your prefered database.
Data Share between threads via protected variables and caches. Threads are isolated with each it's own unique Tcl interpreter so no threading issues here.
And many more things...
LostMVC - Codru core features
Information and Cyber Security has now become a huge field. It is much more complex than it was a few years ago. This has to do with all the advancements in software and technology.
From null to even intermediate in Cyber Security and Penetration Testing will more than likely take anyone with no skills at least a few years if they spend 2-3 hours a day. This is because by merely using some "hacking" tools it's not enough, we need to understand how everything works.
Anyone can start to learn "hacking" in the confinement of their homes. This can be done 100% legally as long as you do not attempt to attack anything outside of your private network. This means you can learn to "hack" in a 100% legal way.
In this post I intend to show how easy it is to take a screenshot from the CommandLine.
Why would you want to do that?
Well there are times when you simply want to take a screenshot of the screen at certain times to track your activity. Or to make a simple screencast without having to install additional tools.
What is password management and why should you care?
We all have tens of online accounts where we're identified by an username/e-mail and a password. Managing all of them can be a hard task. Nothing is hard when you want to keep your information secure and don't want someone to steal your identity, forge documents in your name or deplete your bank account!
NSF is a highly flexible Tcl based, object oriented scripting language which can be used to build other OOP languages like NX.
NX is the next generation object oriented programming system.
It;s one of the things that kept me going and developing software in Tcl an obscure yet powerful language.
It's also per default supported with the NaviServer webserver and the OpenACS platform.
I've used TclOO for my Codru - LostMVC web framework and then switched and rewrote everything in NSF / NX.
A tutorial that scratches the surface of the powerful NX/NSF will help you in getting started.
It has some unique things which change the way you write OOP programs. It was built on the strengths of XOTcl.