-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathblog.sql
268 lines (223 loc) · 88.2 KB
/
blog.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
-- phpMyAdmin SQL Dump
-- version 5.0.2
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Aug 08, 2020 at 04:55 PM
-- Server version: 10.4.11-MariaDB
-- PHP Version: 7.2.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `blog`
--
-- --------------------------------------------------------
--
-- Table structure for table `article`
--
CREATE TABLE `article` (
`article_id` int(11) NOT NULL,
`article_title` varchar(255) NOT NULL,
`article_content` text NOT NULL,
`article_image` varchar(255) NOT NULL,
`article_created_time` datetime NOT NULL,
`id_categorie` int(11) NOT NULL,
`id_author` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `article`
--
INSERT INTO `article` (`article_id`, `article_title`, `article_content`, `article_image`, `article_created_time`, `id_categorie`, `id_author`) VALUES
(6, 'Learn git concepts, not commands', '<p>An interactive git tutorial meant to teach you how git works, not just which commands to execute.</p>\r\n\r\n<h1>Overview</h1>\r\n\r\n<p>In the picture below you see four boxes. One of them stands alone, while the other three are grouped together in what I'll call your Development Environment.</p>\r\n\r\n<p>We'll start with the one that's on it's own though. The Remote Repository is where you send your changes when you want to share them with other people, and where you get their changes from. If you've used other version control systems there's nothing interesting about that.</p>\r\n\r\n<p>The Development Environment is what you have on your local machine. The three parts of it are your Working Directory, the Staging Area and the Local Repository. We'll learn more about those as we start using git.</p>\r\n\r\n<p>Choose a place in which you want to put your Development Environment. Just go to your home folder, or where ever you like to put your projects. You don't need to create a new folder for your Dev Environment though.</p>\r\n\r\n<h1>Getting a Remote Repository</h1>\r\n\r\n<p>Now we want to grab a Remote Repository and put what's in it onto your machine.</p>\r\n\r\n<p>Now that you have a copy of my Remote Repository of your own, it's time to get that onto your machine.</p>\r\n', 'git.png', '2020-02-14 10:28:00', 16, 2),
(17, '10 Data Science and Machine Learning Courses for Beginners ', '<p>Data Science, Machine Learning, Deep Learning, and Artificial intelligence are really hot at this moment and offering a lucrative career to programmers with high pay and exciting work. It's a great opportunity for programmers who are willing to learn these new skills and upgrade themselves and want to solve some of the most interesting real-world problems. It's also important from the job perspective because Robots and Bots are getting smarter day by day, thanks to these technologies and most likely will take over some of the jobs which many programmers do today. Hence, it's important for software engineers and developers to upgrade themselves with these skills. Programmers with these skills are also commanding significantly higher salaries as data science is revolutionizing the world around us.</p>\r\n', 'datascience.jpg', '2020-02-14 11:52:24', 4, 1),
(26, 'Anybody wants to start/practice contributing to OSS projects?? ', '<h1>Introduction</h1>\r\n\r\n<p>I made this super simple ruby gem called <a href=\"https://github.com/K-Sato1995/spell_generator\">spell_generator</a> and looking for people who want to start/practice contributing to OSS projects.</p>\r\n\r\n<h1>Why?</h1>\r\n\r\n<p>Making a PR to an OSS project can be intimidating if you don't know how to actually do to it. But if you know the process of making a PR and have already done it before, it can be very simple and fun.<br />\r\nI want to help people who have been thinking about contributing to OSS projects but have been too scared to do it.<br />\r\nEspecially if you are a self-taught programmer or new graduate who is looking for some experience to put on your resume, contributions to OSS projects would be great to have as your experience.</p>\r\n\r\n<p><strong>I want to help you to take the first step of your OSS journey.</strong></p>\r\n\r\n<h1>What I want you to do</h1>\r\n\r\n<p>As I mentioned above, this gem I created is very simple.<br />\r\nAll it does is creating a random spell based on adjectives and verbs that are stored in different arrays respectively.</p>\r\n\r\n<p>I want you to add one or more adjectives or verbs to the corresponding array.</p>\r\n\r\n<p><a href=\"https://github.com/K-Sato1995/spell_generator/issues/1\">https://github.com/K-Sato1995/spell_generator/issues/1</a></p>\r\n', '6.jpg', '2020-02-14 15:05:13', 2, 2),
(27, 'Create your YOUR Personal Blog 📜 using Reactjs ⚛️ & Github Issues in less than 10 min ', '<h1>React Blog</h1>\r\n\r\n<h2>React + Github Issues 👉 Your Personal Blog 🔥</h2>\r\n\r\n<p>React Blog is a personal blog system build on React that helps you create your own personal blog using Github Issues</p>\r\n\r\n<p>Link : <a href=\"https://github.com/saadpasta/react-blog-github\">https://github.com/saadpasta/react-blog-github</a></p>\r\n\r\n<h2>🔥 Features</h2>\r\n\r\n<p>✅ Own your content<br />\r\n✅ Write using Markdown On Github Issues<br />\r\n✅ Syntax/Code Highlighting<br />\r\n✅ Fully customizable<br />\r\n✅ Tags - Topics<br />\r\n<br />\r\n✅ Links<br />\r\n✅ Reaction<br />\r\n✅ Images<br />\r\n✅ Minutes Read<br />\r\n✅ Beautiful UI Like Medium<br />\r\n✅ Easy deployment: Using Github Pages<br />\r\n✅ Beautiful blockquote</p>\r\n\r\n<h2>🔗 Live Demo</h2>\r\n\r\n<p>Here's a <a href=\"https://saadpasta.github.io/react-blog-github/#/\">live demo</a></p>\r\n\r\n<p>Github <a href=\"https://github.com/saadpasta/react-blog-github/issues\">Issues / Blogs</a></p>\r\n\r\n<hr />\r\n<h2>🚀 Get Up and Running in 10 Minutes</h2>\r\n\r\n<p>You can get a react-blog site up and running on your local dev environment in 10 minutes with these five steps:</p>\r\n\r\n<p>These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.</p>\r\n', 'bbgv69gnhmi97nihyc6k.webp', '2020-02-14 15:55:01', 1, 1),
(40, 'Role-based auth in Angular 9 🔑 ', '<p>You are welcome to join LIVE MasterClass 📺 18-02-2020 8 pm GMT</p>\r\n\r\n<p>Free LIVE MasterClass about designing a role-based system in Angular 🅰</p>\r\n\r\n<p>Register 👉 <a href=\"https://mailchi.mp/9038cbea0f9c/role-based-auth-angular\">https://mailchi.mp/9038cbea0f9c/role-based-auth-angular</a></p>\r\n\r\n<p>⚡ the case of role-based application<br />\r\n⚡ a domain model for a multi-account system<br />\r\n⚡ vectors of authorization<br />\r\n⚡ designing secure REST API for roles<br />\r\n⚡ userAuth object<br />\r\n⚡ Router Guards<br />\r\n⚡ HttpInterceptors<br />\r\n⚡ Silent auth (RxJS magic!)<br />\r\n⚡ Express.js middlewares<br />\r\n⚡ DEMO</p>\r\n', 'xghawvmrh6v3z4pmvgts.webp', '2020-02-18 12:00:01', 14, 8),
(41, 'The 25 most recommended programming books of all-time', '<h2>Methodology:</h2>\r\n\r\n<p>I've simply asked Google for a few queries like "Best Programming Books" and its variations. I have then scrapped all those pages (using ScrapingBee, a web scraping API I'm working on).</p>\r\n\r\n<p>I've deduplicated the links and ended up with nearly 150 links. Using the title of the pages I was also able to quickly discards:</p>\r\n\r\n<ul>\r\n <li>list focussed on one particular technology or platform</li>\r\n <li>list focussed on one particular year</li>\r\n <li>list focussed on free books</li>\r\n <li>Quora and Reddit threads</li>\r\n</ul>\r\n\r\n<p>I ended up with almost 200 HTML files. I went on opening all the files on my browser, open my chrome inspector, found and wrote the CSS selector matching book titles in the article. This took me around 1hours, almost 30 seconds per page.</p>\r\n\r\n<p> </p>\r\n\r\n<h3>25. <a href=\"https://amzn.to/2OZ9JXS\">Continuous Delivery</a> by Jez Humble & David Farley (8.8% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--EQoynaP---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/25.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--EQoynaP---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/25.jpg%23center\" /></a></p>\r\n\r\n<p>"Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours, sometimes even minutes–no matter what the size of a project or the complexity of its code base.</p>\r\n\r\n<p>Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the “deployment pipeline,” an automated process for managing all changes, from check-in to release. Finally, they discuss the “ecosystem” needed to<br />\r\nsupport continuous delivery, from infrastructure, data and configuration management to governance." <a href=\"https://amzn.to/2OZ9JXS\">Amazon.com</a></p>\r\n\r\n<h3>24. <a href=\"https://amzn.to/2u2vpuG\">Algorithms</a> by Robert Sedgewick & Kevin Wayne (8.8% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--QEgOyA1_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/24.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--QEgOyA1_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/24.jpg%23center\" /></a><br />\r\n"The algorithms in this book represent a body of knowledge developed over the last 50 years that has become indispensable, not just for professional programmers and computer science students but for any student with interests in science, mathematics, and engineering, not to mention students who use computation in the liberal arts."<a href=\"https://amzn.to/2u2vpuG\">Amazon.com</a></p>\r\n\r\n<h3>23. <a href=\"https://amzn.to/325cN9T\">The Self-Taught Programmer</a> by Cory Althoff (8.8% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--UBDs1gW6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/23.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--UBDs1gW6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/23.jpg%23center\" /></a><br />\r\n"I am a self-taught programmer. After a year of self-study, I learned to program well enough to land a job as a software engineer II at eBay.</p>\r\n\r\n<p>Once I got there, I realized I was severely under-prepared. I was overwhelmed by the amount of things I needed to know but hadn't learned yet. My journey learning to program, and my experience at my first job as a software engineer were the inspiration for this book.</p>\r\n\r\n<p>This book is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, I also cover the rest of the things you need to know to program professionally that classes and books don't teach you.</p>\r\n\r\n<p>"The Self-taught Programmer" is a roadmap, a guide to take you from writing your first Python program, to passing your first technical interview. The path is there. Will you take it?"<a href=\"https://amzn.to/325cN9T\">Amazon.com</a></p>\r\n\r\n<h3>22. <a href=\"https://amzn.to/2SQLQTn\">Rapid Development</a> by Steve McConnell (8.8% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--xenhZVHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/22.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--xenhZVHv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/22.jpg%23center\" /></a><br />\r\n"Corporate and commercial software-development teams all want solutions for one important problem—how to get their high-pressure development schedules under control. In RAPID DEVELOPMENT, author Steve McConnell addresses that concern head-on with overall strategies, specific best practices, and valuable tips that help shrink and control development schedules and keep projects moving. Inside, you’ll find:</p>\r\n\r\n<ul>\r\n <li>A rapid-development strategy that can be applied to any project and the best practices to make that strategy work</li>\r\n <li>Candid discussions of great and not-so-great rapid-development practices—estimation, prototyping, forced overtime, motivation, teamwork, rapid-development languages, risk management, and many others</li>\r\n <li>A list of classic mistakes to avoid for rapid-development projects, including creeping requirements, shortchanged quality, and silver-bullet syndrome</li>\r\n <li>Case studies that vividly illustrate what can go wrong, what can go right, and how to tell which direction your project is going</li>\r\n <li>RAPID DEVELOPMENT is the real-world guide to more efficient applications development."<a href=\"https://amzn.to/2SQLQTn\">Amazon.com</a></li>\r\n</ul>\r\n\r\n<h3>21. <a href=\"https://amzn.to/323c5Ki\">Coders at Work</a> by Peter Seibel (10.2% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--65YlM020--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/21.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--65YlM020--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/21.jpg%23center\" /></a><br />\r\n"This is a who's who in the programming world - a fascinating look at how some of the best in the world do their work. Patterned after the best selling Founders at Work, the book represents two years of interviews with some of the top programmers of our times."<a href=\"https://amzn.to/323c5Ki\">Amazon.com</a></p>\r\n\r\n<h3>20. <a href=\"https://amzn.to/38BFCxd\">Domain-Driven Design</a> by Eric Evans (10.2% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--atepd61T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/20.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--atepd61T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/20.jpg%23center\" /></a><br />\r\n"Leading software designers have recognized domain modeling and design as critical topics for at least twenty years, yet surprisingly little has been written about what needs to be done or how to do it. Although it has never been clearly formulated, a philosophy has developed as an undercurrent in the object community, which I call "domain-driven design".</p>\r\n\r\n<p>I have spent the past decade focused on developing complex systems in several business and technical domains. I've tried best practices in design and development process as they have emerged from the leaders in the object-oriented development community. Some of my projects were very successful; a few failed. A feature common to the successes was a rich domain model that evolved through iterations of design and became part of the fabric of the project.</p>\r\n\r\n<p>This book provides a framework for making design decisions and a technical vocabulary for discussing domain design. It is a synthesis of widely accepted best practices along with my own insights and experiences. Projects facing complex domains can use this framework to approach domain-driven design systematically."<a href=\"https://amzn.to/38BFCxd\">Amazon.com</a></p>\r\n\r\n<h3>19. <a href=\"https://amzn.to/2SU7N3Q\">The Art of Computer Programming</a> by Donald E. Knuth(10.2% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--0WI0lqmq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/19.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--0WI0lqmq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/19.jpg%23center\" /></a><br />\r\n"Countless readers have spoken about the profound personal influence of Knuth’s work. Scientists have marveled at the beauty and elegance of his analysis, while ordinary programmers have successfully applied his “cookbook” solutions to their day-to-day problems. All have admired Knuth for the breadth, clarity, accuracy, and good humor found in his books."<a href=\"https://amzn.to/2SU7N3Q\">Amazon.com</a></p>\r\n\r\n<h3>18. <a href=\"https://amzn.to/2HJ7HqR\">Structure and Interpretation of Computer Programs</a> by Harold Abelson / Gerald Jay Sussman / Julie Sussman (13.2% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--NcbSb2NW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/17.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--NcbSb2NW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/17.jpg%23center\" /></a><br />\r\n"Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the "Dragon Book," is available in a new edition. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published. The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development."<a href=\"https://amzn.to/2HJ7HqR\">Amazon.com</a></p>\r\n\r\n<h3>17. <a href=\"https://amzn.to/37xEadR\">Patterns of Enterprise Application Architecture</a> by Martin Fowler (14.7% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Sgio7eNO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/16.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Sgio7eNO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/16.jpg%23center\" /></a><br />\r\n"The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned."<a href=\"https://amzn.to/37xEadR\">Amazon.com</a></p>\r\n\r\n<h3>16. <a href=\"https://amzn.to/2u8cOxo\">Programming Pearls</a> by Jon Bentley (16.1% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--7xgqyQ44--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/16-bis.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--7xgqyQ44--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/16-bis.jpg%23center\" /></a><br />\r\n"Computer programming has many faces. Fred Brooks paints the big picture in The Mythical Man Month; his essays underscore the crucial role of management in large software projects. At a finer grain, Steve McConnell teaches good programming style in Code Complete. The topics in those books are the key to good software and the hallmark of the professional programmer. Unfortunately, though, the workmanlike application of those sound engineering principles isn't always thrilling -- until the software is completed on time and works without surprise.</p>\r\n\r\n<p>The columns in this book are about a more glamorous aspect of the profession: programming pearls whose origins lie beyond solid engineering, in the realm of insight and creativity. Just as natural pearls grow from grains of sand that have irritated oysters, these programming pearls have grown from real problems that have irritated real programmers. The programs are fun, and they teach important programming techniques and fundamental design principles."<a href=\"https://amzn.to/2u8cOxo\">Amazon.com</a></p>\r\n\r\n<h3>15. <a href=\"https://amzn.to/2P2YRIh\">Peopleware</a> by Tom DeMarco & Tim Lister (17.6% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--3TCF5DDY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/15.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--3TCF5DDY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/15.jpg%23center\" /></a><br />\r\n"Drawing on their software development and management experience, and highlighting the insights and wisdom of other successful managers, Mantle and Lichty provide the rules, tools, and insights you need to manage and understand people and teams in order to deliver software successfully and avoid projects that have run catastrophically over schedule and budget. The unique insight of this longtime bestseller is that the major issues of software development are human, not technical. They're not easy issues; but solve them, and you'll maximize your chances of success. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects."<a href=\"https://amzn.to/2P2YRIh\">Amazon.com</a></p>\r\n\r\n<h3>14. <a href=\"https://amzn.to/2SAdPrt\">Introduction to Algorithms</a> by Thomas H. Cormen / Charles E. Leiserson / Ronald L. Rivest / Clifford Stein (17.6% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--bA90l1nK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/14.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--bA90l1nK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/14.jpg%23center\" /></a><br />\r\n"Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.</p>\r\n\r\n<p>The first edition became a widely used text in universities worldwide as well as the standard reference for professionals. The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, substantial additions to the chapter on recurrence (now called “Divide-and-Conquer”), and an appendix on matrices. It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many exercises and problems have been added for this edition. The international paperback edition is no longer available; the hardcover is available worldwide."<a href=\"https://amzn.to/2SAdPrt\">Amazon.com</a></p>\r\n\r\n<h3>13. <a href=\"https://amzn.to/38zhTOo\">Code</a> by Charles Petzold (19.1% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--VLfMWdny--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/13.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--VLfMWdny--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/13.jpg%23center\" /></a><br />\r\n"What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries.</p>\r\n\r\n<p>Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who’s ever wondered about the secret inner life of computers and other smart machines.</p>\r\n\r\n<p>It’s a cleverly illustrated and eminently comprehensible story—and along the way, you’ll discover you’ve gained a real context for understanding today’s world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within."<a href=\"https://amzn.to/38zhTOo\">Amazon.com</a></p>\r\n\r\n<h3>12. <a href=\"https://amzn.to/2UYPsW3\">Don't Make Me Think</a> by Steve Krug (19.1% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Pf1e3mIa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/12.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Pf1e3mIa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/12.jpg%23center\" /></a><br />\r\n"Since Don’t Make Me Think was first published in 2000, hundreds of thousands of Web designers and developers have relied on usability guru Steve Krug’s guide to help them understand the principles of intuitive navigation and information design. Witty, commonsensical, and eminently practical, it’s one of the best-loved and most recommended books on the subject.</p>\r\n\r\n<p>Now Steve returns with fresh perspective to reexamine the principles that made Don’t Make Me Think a classic–with updated examples and a new chapter on mobile usability. And it’s still short, profusely illustrated…and best of all–fun to read.</p>\r\n\r\n<p>If you’ve read it before, you’ll rediscover what made Don’t Make Me Think so essential to Web designers and developers around the world. If you’ve never read it, you’ll see why so many people have said it should be required reading for anyone working on Web sites."<a href=\"https://amzn.to/2UYPsW3\">Amazon.com</a></p>\r\n\r\n<h3>11. <a href=\"https://amzn.to/2HziTGl\">Soft Skills</a> by John Sonmez (22% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--JY5fhUMe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/11.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--JY5fhUMe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/11.jpg%23center\" /></a><br />\r\n"For most software developers, coding is the fun part. The hard bits are dealing with clients, peers, and managers, staying productive, achieving financial security, keeping yourself in shape, and finding true love. This book is here to help.</p>\r\n\r\n<p>Soft Skills: The software developer's life manual is a guide to a well-rounded, satisfying life as a technology professional. In it, developer and life coach John Sonmez offers advice to developers on important "soft" subjects like career and productivity, personal finance and investing, and even fitness and relationships. Arranged as a collection of 71 short chapters, this fun-to-read book invites you to dip in wherever you like. A Taking Action section at the end of each chapter shows you how to get quick results. Soft Skills will help make you a better programmer, a more valuable employee, and a happier, healthier person."<a href=\"https://amzn.to/2HziTGl\">Amazon.com</a></p>\r\n\r\n<h3>10. <a href=\"https://amzn.to/37CuhvD\">Cracking the Coding Interview</a> by Gayle Laakmann McDowell (22% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Ibw0I7hL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/10.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Ibw0I7hL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/10.jpg%23center\" /></a><br />\r\n"I am not a recruiter. I am a software engineer. And as such, I know what it's like to be asked to whip up brilliant algorithms on the spot and then write flawless code on a whiteboard. I've been through this as a candidate and as an interviewer.</p>\r\n\r\n<p>Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book.</p>\r\n\r\n<p>Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions.</p>\r\n\r\n<p>These interview questions are real; they are not pulled out of computer science textbooks. They reflect what's truly being asked at the top companies, so that you can be as prepared as possible. WHAT'S INSIDE?</p>\r\n\r\n<ul>\r\n <li>189 programming interview questions, ranging from the basics to the trickiest algorithm problems.</li>\r\n <li>A walk-through of how to derive each solution, so that you can learn how to get there yourself.</li>\r\n <li>Hints on how to solve each of the 189 questions, just like what you would get in a real interview.</li>\r\n <li>Five proven strategies to tackle algorithm questions, so that you can solve questions you haven't seen.</li>\r\n <li>Extensive coverage of essential topics, such as big O time, data structures, and core algorithms.</li>\r\n <li>A behind the scenes look at how top companies like Google and Facebook hire developers.</li>\r\n <li>Techniques to prepare for and ace the soft side of the interview: behavioral questions.</li>\r\n <li>For interviewers and companies: details on what makes a good interview question and hiring process."<a href=\"https://amzn.to/37CuhvD\">Amazon.com</a></li>\r\n</ul>\r\n\r\n<h3>9. <a href=\"https://amzn.to/38Eb9yO\">Design Patterns</a> by by Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides (25% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--XdxT82Xp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/9.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--XdxT82Xp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/9.jpg%23center\" /></a><br />\r\n"Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.</p>\r\n\r\n<p>The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.</p>\r\n\r\n<p>Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk."<a href=\"https://amzn.to/38Eb9yO\">Amazon.com</a></p>\r\n\r\n<h3>8. <a href=\"https://amzn.to/2P37DWJ\">Working Effectively with Legacy Code</a> by Michael Feathers (26.4% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s---9YagzAR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/8.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s---9YagzAR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/8.jpg%23center\" /></a><br />\r\n"In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his own renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.<br />\r\nThis book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes."<a href=\"https://amzn.to/2P37DWJ\">Amazon.com</a></p>\r\n\r\n<h3>7. <a href=\"https://amzn.to/2u63SIS\">The Clean Coder</a> by Robert Martin (27.9% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--ZtiA7PUa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/7.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--ZtiA7PUa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/7.jpg%23center\" /></a><br />\r\n"Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.</p>\r\n\r\n<p>In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice–about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.</p>\r\n\r\n<p>Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them–and earn the pride and fulfillment that they alone possess."<a href=\"https://amzn.to/2u63SIS\">Amazon.com</a></p>\r\n\r\n<h3>6. <a href=\"https://amzn.to/3bL1lVz\">The Mythical Man-Month</a> by Frederick P. Brooks Jr (27.9% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--VOxo9OdI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/6.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--VOxo9OdI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/6.jpg%23center\" /></a><br />\r\n"Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time."<a href=\"https://amzn.to/3bL1lVz\">Amazon.com</a></p>\r\n\r\n<h3>5. <a href=\"https://amzn.to/2SUiUtA\">Head First Design Patterns</a> by Eric Freeman / Bert Bates / Kathy Sierra / Elisabeth Robson (29.4% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--mEZ0dQqV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/5.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--mEZ0dQqV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/5.jpg%23center\" /></a><br />\r\n"What’s so special about design patterns?</p>\r\n\r\n<p>At any given moment, someone struggles with the same software design problems you have. And, chances are, someone else has already solved your problem. This edition of Head First Design Patterns—now updated for Java 8—shows you the tried-and-true, road-tested patterns used by developers to create functional, elegant, reusable, and flexible software. By the time you finish this book, you’ll be able to take advantage of the best design practices and experiences of those who have fought the beast of software design and triumphed.</p>\r\n\r\n<p>What’s so special about this book?</p>\r\n\r\n<p>We think your time is too valuable to spend struggling with new concepts. Using the latest research in cognitive science and learning theory to craft a multi-sensory learning experience, Head First Design Patterns uses a visually rich format designed for the way your brain works, not a text-heavy approach that puts you to sleep."<a href=\"https://amzn.to/2SUiUtA\">Amazon.com</a></p>\r\n\r\n<h3>4. <a href=\"https://amzn.to/2uSs167\">Refactoring</a> by Martin Fowler (35% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--3ppuefuL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/4.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--3ppuefuL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/4.jpg%23center\" /></a><br />\r\n"As the application of object technology--particularly the Java programming language--has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications.</p>\r\n\r\n<p>For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as refactoring, these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use. . .until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process. With proper training a skilled system designer" <a href=\"https://amzn.to/2uSs167\">Amazon.com</a></p>\r\n\r\n<h3>3. <a href=\"https://amzn.to/37wO0wR\">Code Complete</a> by Steve McConnell (42% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--bB3dykHA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/3.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--bB3dykHA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/3.jpg%23center\" /></a><br />\r\n"Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code."<a href=\"https://amzn.to/37wO0wR\">Amazon.com</a></p>\r\n\r\n<h3>2. <a href=\"https://amzn.to/2Hy0n0U\">Clean Code</a> by Robert C. Martin (66% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--tcK22PgO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/2.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--tcK22PgO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/2.jpg%23center\" /></a><br />\r\n"Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code—of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code."<a href=\"https://amzn.to/2Hy0n0U\">Amazon.com</a></p>\r\n\r\n<h3>1. <a href=\"https://amzn.to/3bO6Xyb\">The Pragmatic Programmer</a> by David Thomas & Andrew Hunt (67% recommended)</h3>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--V-6_BN0z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/1.jpg%23center\"><img alt=\"\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--V-6_BN0z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.daolf.com/images/programming_book_list/1.jpg%23center\" /></a><br />\r\n"<br />\r\nThe Pragmatic Programmer is one of those rare tech books you’ll read, re-read, and read again over the years. Whether you’re new to the field or an experienced practitioner, you’ll come away with fresh insights each and every time.</p>\r\n\r\n<p>Dave Thomas and Andy Hunt wrote the first edition of this influential book in 1999 to help their clients create better software and rediscover the joy of coding. These lessons have helped a generation of programmers examine the very essence of software development, independent of any particular language, framework, or methodology, and the Pragmatic philosophy has spawned hundreds of books, screencasts, and audio books, as well as thousands of careers and success stories.</p>\r\n\r\n<p>Now, twenty years later, this new edition re-examines what it means to be a modern programmer. Topics range from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse."<a href=\"https://amzn.to/3bO6Xyb\">Amazon.com</a></p>\r\n\r\n<h2>Conclusion</h2>\r\n\r\n<p>Although the order might suprise some, by definition, most of you must have heard of these books already.</p>\r\n\r\n<p>A few additional things I learned making this list:</p>\r\n\r\n<ul>\r\n <li>Marting Fowler and Steve McConnell are the only author with several books in the list.</li>\r\n <li>Cracking to Code interview is the most recent book on the list, released in 2015.</li>\r\n <li><a href=\"https://amzn.to/321qbMx\">Python Programming</a>, by John Zelle was the most cited book focused on one language. It would have #5 had I taken it into account.</li>\r\n</ul>\r\n\r\n<p>I hope you enjoyed this article.</p>\r\n\r\n<p>I must admit, this one took a while to write. If you liked this article and feel like Twitter would like it, please <a href=\"https://twitter.com/intent/tweet?text=https%3A%2F%2Fwww.daolf.com%2Fposts%2Fbest-programming-books%2F%20by%20%40PierreDeWulf\">share it</a>, it really does help :).</p>\r\n\r\n<p><em>Note: while making this article, <a href=\"https://dev.to/awwsmm/20-most-recommended-books-for-software-developers-5578\">this one</a> appeared in the Google results. I ended up doing mine anyway because I would use a different automated aggregation technique that allowed be to compiled twice as much lists as he did. However, checking both list could be interesting :).</em></p>\r\n', 't3utqgh6lr4gf06t6pnf.webp', '2020-02-18 13:01:47', 1, 1);
INSERT INTO `article` (`article_id`, `article_title`, `article_content`, `article_image`, `article_created_time`, `id_categorie`, `id_author`) VALUES
(43, 'Ask HN: Does Anybody Still Use JQuery?', '<h3>Lorem Ipsum: when, and when not to use it</h3>\r\n\r\n<p>Do you like Cheese Whiz? Spray tan? Fake eyelashes? That's what is Lorem Ipsum to many—it rubs them the wrong way, all the way. It's unreal, uncanny, makes you wonder if something is wrong, it seems to seek your attention for all the wrong reasons. Usually, we prefer the real thing, wine without sulfur based preservatives, real butter, not margarine, and so we'd like our layouts and designs to be filled with real words, with thoughts that count, information that has value.</p>\r\n\r\n<p>The toppings you may chose for that TV dinner pizza slice when you forgot to shop for foods, the paint you may slap on your face to impress the new boss is your business. But what about your daily bread? Design comps, layouts, wireframes—will your clients accept that you go about things the facile way? Authorities in our business will tell in no uncertain terms that Lorem Ipsum is that huge, huge no no to forswear forever. Not so fast, I'd say, there are some redeeming factors in favor of greeking text, as its use is merely the symptom of a worse problem to take into consideration.</p>\r\n\r\n<p><img alt=\"\" src=\"http://localhost/blog/webmag/img/post-4.jpg\" /></p>\r\n\r\n<p>So Lorem Ipsum is bad (not necessarily)</p>\r\n\r\n<p>You begin with a text, you sculpt information, you chisel away what's not needed, you come to the point, make things clear, add value, you're a content person, you like words. Design is no afterthought, far from it, but it comes in a deserved second. Anyway, you still use Lorem Ipsum and rightly so, as it will always have a place in the web workers toolbox, as things happen, not always the way you like it, not always in the preferred order. Even if your less into design and more into content strategy you may find some redeeming value with, wait for it, dummy copy, no less.</p>\r\n\r\n<p>There's lot of hate out there for a text that amounts to little more than garbled words in an old language. The villagers are out there with a vengeance to get that Frankenstein, wielding torches and pitchforks, wanting to tar and feather it at the least, running it out of town in shame.</p>\r\n\r\n<p>One of the villagers, Kristina Halvorson from Adaptive Path, holds steadfastly to the notion that design can’t be tested without real content:</p>\r\n\r\n<blockquote>I’ve heard the argument that “lorem ipsum” is effective in wireframing or design because it helps people focus on the actual layout, or color scheme, or whatever. What kills me here is that we’re talking about creating a user experience that will (whether we like it or not) be DRIVEN by words. The entire structure of the page or app flow is FOR THE WORDS.</blockquote>\r\n\r\n<p>If that's what you think how bout the other way around? How can you evaluate content without design? No typography, no colors, no layout, no styles, all those things that convey the important signals that go beyond the mere textual, hierarchies of information, weight, emphasis, oblique stresses, priorities, all those subtle cues that also have visual and emotional appeal to the reader. Rigid proponents of content strategy may shun the use of dummy copy but then designers might want to ask them to provide style sheets with the copy decks they supply that are in tune with the design direction they require.</p>\r\n\r\n<h3>Summing up, if the copy is diverting attention from the design it’s because it’s not up to task.</h3>\r\n\r\n<p>Typographers of yore didn't come up with the concept of dummy copy because people thought that content is inconsequential window dressing, only there to be used by designers who can’t be bothered to read. Lorem Ipsum is needed because words matter, a lot. Just fill up a page with draft copy about the client’s business and they will actually read it and comment on it. They will be drawn to it, fiercely. Do it the wrong way and draft copy can derail your design review.</p>\r\n', 'post-page.jpg', '2020-08-05 16:11:14', 4, 1),
(44, '10 Amazing JavaScript Games In Under 13kB of Code', '<h1> </h1>\r\n\r\n<p>In this fun article we'll take a look at the amazing <a href=\"https://js13kgames.com/\" target=\"_blank\">JS13K</a> game challenge. It is an annual coding competition where super talented JavaScript developers show off their games made with only 13kB of code or less.</p>\r\n\r\n<p>We've chosen some of our favorite games from last year to share with you. Enjoy them as a tiny gaming break from work or as a source of coding inspiration!</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/onoff/index.html\" target=\"_blank\"><img alt=\"on-off.png\" src=\"https://tutorialzine.com/media/2018/11/on-off.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/onoff/index.html\" target=\"_blank\">OnOff</a></h2>\r\n\r\n<p>This is a challenging platformer with great design and fun music. Dodge spikes, jump over pits, and toggle between dimensions to complete all the 25 levels. The game also offers a cool level editor where you can create your own levels.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/everyones-sky/index.html\" target=\"_blank\"><img alt=\"everyonesky.jpg\" src=\"https://tutorialzine.com/media/2019/02/everyonesky.jpg\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/everyones-sky/index.html\" target=\"_blank\">Everyone's sky</a></h2>\r\n\r\n<p>Everyone's sky offers the classic Asteroid style game but with an adventure and exploration RPG twist. You fly around space and its solar systems, contacting other civilizations and collecting resources. You can choose to complete missions peacefully, making allies, or just attack everything that comes in your way.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/underrun/index.html\" target=\"_blank\"><img alt=\"underrun.png\" src=\"https://tutorialzine.com/media/2018/11/underrun.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/underrun/index.html\" target=\"_blank\">Underrun</a></h2>\r\n\r\n<p>A shooter game where you run in a destroyed lab and your goal is to kill the spider-looking enemies and find the terminals and reboot the systems. The game runs really smoothly, with nice pixelated graphics and great sound and lighting effects.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/konnekt/index.html\" target=\"_blank\"><img alt=\"konnekt.png\" src=\"https://tutorialzine.com/media/2018/11/konnekt.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/konnekt/index.html\" target=\"_blank\">Konnekt</a></h2>\r\n\r\n<p>This is a simple real-time-strategy game where a virus has infected some of your system's nodes and you need to clear them before they spread. The game is really addicting and the more you play, the harder it gets and the more nodes you have to deal with.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/super-chrono-portal-maker/index.html\" target=\"_blank\"><img alt=\"super-chrono-portal-maker.png\" src=\"https://tutorialzine.com/media/2018/11/super-chrono-portal-maker.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/super-chrono-portal-maker/index.html\" target=\"_blank\">Super Chrono Portal Maker</a></h2>\r\n\r\n<p>An hommage to the original Super Mario games, this platformer offers 30 levels of run and jump action. Each level introduces more and more game mechanics, making the game super fun to play. There is also a level builder where you can create your own levels and share them with friends.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/offline-paradise/index.html\" target=\"_blank\"><img alt=\"offline-paradise.png\" src=\"https://tutorialzine.com/media/2018/11/offline-paradise.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/offline-paradise/index.html\" target=\"_blank\">Offline Paradise</a></h2>\r\n\r\n<p>A fast-paced paltformer where you need to run, jump or dash over different obstacles. An awesome feature of this game are the automatic checkpoint which bring you right back into the action if you fail on one of the challenges. It runs very smoothly with a constant high FPS while still having a pleasing parallax background, animations and music.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/raven/index.html\" target=\"_blank\"><img alt=\"raven.png\" src=\"https://tutorialzine.com/media/2018/11/raven.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/raven/index.html\" target=\"_blank\">Raven</a></h2>\r\n\r\n<p>Raven is a action-puzzle game where you need to fix the security cameras of the secret facility. There are mysterious creatures that you need to keep an eye on, or else they will kill you in the dark.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/systems-offline/index.html\" target=\"_blank\"><img alt=\"systems-offline.png\" src=\"https://tutorialzine.com/media/2018/11/systems-offline.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/systems-offline/index.html\" target=\"_blank\">Systems Offline</a></h2>\r\n\r\n<p>Awesome puzzle game in which you are stuck on a broken space station. Your mission is to fix the systems and escape before your oxygen runs out. The game can be played with a mouse or touch controls, offers colorblind mode and has three different difficulty levels.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/re-wire/index.html\" target=\"_blank\"><img alt=\"rewire.png\" src=\"https://tutorialzine.com/media/2018/11/rewire.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/re-wire/index.html\" target=\"_blank\">Re-wire</a></h2>\r\n\r\n<p>This game tests your logical thinking skills. You need to connect the nodes with the cable and plug it into the socket, without touching the blades. It is really challenging and fun and the best part is that it saves automatically and you can play it multiple times without losing your progress.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/off-the-line/index.html\" target=\"_blank\"><img alt=\"off-the-line.png\" src=\"https://tutorialzine.com/media/2018/11/off-the-line.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/off-the-line/index.html\" target=\"_blank\">Off The Line</a></h2>\r\n\r\n<p>Off the line is one of those games that have a very simple concept, while being super fun to play and difficult to master. There are 20 stages and 3 difficulty levels that you can try if you are looking for a challenge.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/1024-moves/index.html\" target=\"_blank\"><img alt=\"1024-moves.png\" src=\"https://tutorialzine.com/media/2018/11/1024-moves.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/1024-moves/index.html\" target=\"_blank\">1024 Moves</a></h2>\r\n\r\n<p>This is an amazing 3D puzzle game where you have the task of moving a cube through a tile grid and reach the endpoint. Avoid the holes, move different objects and try to complete all the levels in less than 1024 moves.</p>\r\n\r\n<hr />\r\n<p><a href=\"https://js13kgames.com/games/spacecraft/index.html\" target=\"_blank\"><img alt=\"spacecraft.png\" src=\"https://tutorialzine.com/media/2018/11/spacecraft.png\" /></a></p>\r\n\r\n<h2><a href=\"https://js13kgames.com/games/spacecraft/index.html\" target=\"_blank\">Spacecraft</a></h2>\r\n\r\n<p>Spacecraft is an interesting game where you need to collect as many tokens as you can from the planets of the Solar System. You need to stay on track, dodge obstacles and asteroids, and spend your tokens wisely to upgrade your ship.</p>\r\n\r\n<hr />\r\n<p><strong>Bootstrap Studio</strong></p>\r\n\r\n<p>The revolutionary web design tool for creating responsive websites and apps.</p>\r\n\r\n<p><a href=\"https://tutorialzine.com/2019/02/10-amazing-javascript-games#\">LEARN MORE</a></p>\r\n', '10-amazing-js-games.png', '2020-08-06 14:58:20', 15, 1),
(45, '10 Useful Git Tips', '<p>Over the past few years git has vastly grown in popularity to become one of the most used version control systems. It is used by developers coding in various languages and teams of all sizes, from small open-source projects to huge codebases like the <a href=\"https://github.com/torvalds/linux\" target=\"_blank\">linux kernel</a>.</p>\r\n\r\n<p>In this article we are going to share with you a few tips that could improve your git experience and workflow.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-log#git-log---no-merges\" target=\"_blank\">git log --no-merges</a></h2>\r\n\r\n<p>This git command shows the whole commit history but skips commits that merged two branches together or solve a merge conflict. This allows you to quickly see all the changes done to the project, without having merge commits cluttering the git history.</p>\r\n\r\n<pre>\r\n$git log --no-merges\r\n\r\ncommit e75fe8bf2c5c46dbd9e1bc20d2f8b2ede81f2d93\r\nAuthor: John\r\nDate: Mon Jul 10 18:04:50 2017 +0300\r\n\r\n Add new branch.\r\n\r\ncommit 080dfd342ab0dbdf69858e3b01e18584d4eade34\r\nAuthor: John\r\nDate: Mon Jul 11 15:40:56 2017 +0300\r\n\r\n Added index.php.\r\n\r\ncommit 2965803c0deeac1f2427ec2f5394493ed4211655\r\nAuthor: John\r\nDate: Mon Jul 13 12:14:50 2017 +0300\r\n\r\n Added css files.\r\n\r\n</pre>\r\n\r\n<p> </p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-revert#git-revert--n\" target=\"_blank\">git revert --no-commit [commit]</a></h2>\r\n\r\n<p>Git revert generates a new commit that undoes the changes made by existing commits and generates a new commit with the resulting content. If you want to to revert the named commits and avoid the automatic commits, you can use the flag --no-commit or the shorthand -n.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-diff#git-diff--w\" target=\"_blank\">git diff -w</a></h2>\r\n\r\n<p><code>Git diff</code> shows the changes between two commits, two working trees or two files on disk. When multiple people work on the same project, often there are changes due to text editor's tab and space setting. In order to ignore differences caused by whitespaces when comparing lines, you can use it with the -w flag.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-diff#git-diff---statltwidthgtltname-widthgtltcountgt\" target=\"_blank\">git diff --stat</a></h2>\r\n\r\n<p>Shows how each file has been changed over time. You can add 3 parameters: <strong>width</strong> to override the default output width, <strong>name-width</strong> to set the width of the filename and <strong>count</strong> to limit the output to the first number of lines.</p>\r\n\r\n<pre>\r\n$ git diff --stat\r\n index.php | 83 +++++++++++++++++++++++++++++---------------------------\r\n 1 file changed, 43 insertions(+), 40 deletions(-)\r\n\r\n</pre>\r\n\r\n<pre>\r\n$ git diff --stat-width=10\r\n index.php | 83 +++---\r\n 1 file changed, 43 insertions(+), 40 deletions(-)\r\n</pre>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-reset#git-reset---soft\" target=\"_blank\">git reset --soft HEAD^</a></h2>\r\n\r\n<p>Reset the head to a certain commit without touching the index file and the working tree. All changes made after this commit are moved to "staged for commit" stage. After that you just need to run <code>git commit</code> to add them back in.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-stash#git-stash-branchltbranchnamegtltstashgt\" target=\"_blank\">git stash branch [branch-name] [stash]</a></h2>\r\n\r\n<p>This command creates a new branch named branch-name and check it out, then applies the changes from the given stash to it and drops the stash. If no stash is given, it uses the latest one. This allows you to apply any stashed changes into a safer environment, that can later be merged into master.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-branch#git-branch--a\" target=\"_blank\">git branch -a</a></h2>\r\n\r\n<p>It shows a list of all remote-tracking and local branches. You can use the --merged flag to see only the branches that are fully merged to the master branch. This way you can track your branches and find out which ones aren't used anymore and can be deleted.</p>\r\n\r\n<pre>\r\n$ git branch -a\r\n\r\n dev\r\n* master\r\n remotes/origin/HEAD -> origin/master\r\n remotes/origin/dev\r\n</pre>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-commit#git-commit---amend\" target=\"_blank\">git commit --amend</a></h2>\r\n\r\n<p>With <code>git commit --amend</code> you can change your previous commit, instead of making a new one. If you haven't pushed your changes to a remote branch, you can use this command to amend the most recent commit, adding your latest changes and even changing your commit message.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-pull#git-pull---rebasefalsetruepreserveinteractive\" target=\"_blank\">git pull --rebase</a></h2>\r\n\r\n<p>Git pull --rebase forces git to first pull the changes and then rebase the unpushed commits on top of the latest version of the remote branch. The --rebase option can be used to ensure a linear history by preventing unnecessary merge commits.</p>\r\n\r\n<hr />\r\n<h2><a href=\"https://git-scm.com/docs/git-add#git-add--p\" target=\"_blank\">git add -p</a></h2>\r\n\r\n<p>When you use this command, instead of immediately adding all the changed to the index, it goes through each change and asks what you want to do with it. This way, it allows you to interactively choose exactly what you want to be committed.</p>\r\n\r\n<pre>\r\ndiff --git a/package.json b/package.json\r\nindex db78332..a814f7e 100644\r\n--- a/package.json\r\n+++ b/package.json\r\n@@ -6,7 +6,6 @@\r\n },\r\n "devDependencies": {\r\n "bootstrap-sass": "^3.3.7",\r\n- "gulp": "^3.9.1",\r\n "jquery": "^3.1.0",\r\n "laravel-elixir": "^6.0.0-11",\r\n "laravel-elixir-vue-2": "^0.2.0",\r\nStage this hunk [y,n,q,a,d,/,e,?]? </pre>\r\n', '10-useful-git-tips.png', '2020-08-06 16:45:08', 16, 1),
(46, 'Creating an Image Zoom Library With Vanilla JavaScript', '<p>In this tutorial we are going to build a simple JavaScript library for adding zoom-on-hover effects to images. We will make the whole library from scratch, without relying on jQuery or any other external dependencies. Let's jump right in!</p>\r\n\r\n<h2>The Project</h2>\r\n\r\n<p>You can see this type of effect on many shopping sites, including very popular ones like <a href=\"https://www.ebay.com/\" target=\"_blank\">eBay</a> and <a href=\"https://www.amazon.com/\" target=\"_blank\">Amazon</a>. It usually consists of a group of small photos which can be enlarged and inspected in further detail with an on-hover magnifier.</p>\r\n\r\n<p> </p>\r\n\r\n<div>\r\n<figure><video loop=\"\" autoplay=\"\" controls=\"\" src=\"https://tutorialzine.com/media/2017/08/vanilla-zoom-demo.mp4\"></video><figcaption>Our Library in Action</figcaption></figure>\r\n</div>\r\n\r\n<p> </p>\r\n\r\n<p>To keep the tutorial simple we won't be adding too many features to the library. It will contain only one JavaScript file, plus an optional CSS file for quickly styling a gallery like the one above.</p>\r\n\r\n<h2>Designing the Library</h2>\r\n\r\n<p>Before we start building the library, let's take a look at how we want people to use it. Making that design decision first will make developing the actual library easier later on.</p>\r\n\r\n<p>Since we are making a gallery plugin, people who use it will need to have some boilerplate HTML. This markup will contain their images, an empty <code>div</code> for the zoom effect, as well as some predefined classes to make the library work.</p>\r\n\r\n<p> </p>\r\n\r\n\r\n<p>People are free to change this layout and add as many images as they want. It's important, however, that every image has the <code>.small-preview</code> class, and that there is an empty div with the <code>.zoomed-image</code> class.</p>\r\n\r\n<p> </p>\r\n\r\n<p>The library will be mainly JavaScript driven but there are also a few important CSS styles that need to be set. Users can include our CSS file directly in their HTML.</p>\r\n\r\n<pre>\r\n\r\n </pre>\r\n\r\n<p>Now that the markup and styles are set, all that is left is to include the library and initialize it.</p>\r\n\r\n<pre>\r\n\r\n </pre>\r\n\r\n<p>Including the library's .js file makes the <code>vanillaZoom</code> object globally available. The object has only one method which is for initializing the plugin. It takes a single parameter - the id of our gallery. This way we can have multiple independent galleries initialized on one page.</p>\r\n\r\n<h2>Developing the Library</h2>\r\n\r\n<p>When building front-end JavaScript libraries we need to make sure we register their API properly. There are many ways to do this, possibly the easiest of which is <a href=\"http://checkman.io/blog/creating-a-javascript-library/\" target=\"_blank\">this method</a> by Jordan Checkman. We advise you to read his full blog post, but in short it boils down to this:</p>\r\n\r\n<pre>\r\n<code>\r\n(function(window) {\r\n function define_library() {\r\n // Create the library object and all its properties and methods.\r\n var vanillaZoom = {};\r\n vanillaZoom.init = function(galleryId) {\r\n // Our library's logic goes here.\r\n }\r\n return vanillaZoom;\r\n }\r\n\r\n // Add the vanillaZoom object to global scope if its not already defined.\r\n if(typeof(vanillaZoom) === 'undefined') {\r\n window.vanillaZoom = define_library();\r\n }\r\n else{\r\n console.log("Library already defined.");\r\n }\r\n})(window);</code></pre>\r\n\r\n<p>The above code is wrapped in a self executing function. This way when we add the <code>vanilla-zoom.js</code> file to our project, the library will be automatically registered and the <code>vanillaZoom</code> object with all its methods will be made available to the user.</p>\r\n\r\n<p>Our library has only one method - <code>vanillaZoom.init(galleryId)</code>. Its job is to select the gallery DOM elements and add event listeners to them.</p>\r\n\r\n<p>First we check if the proper elements have been added to the HTML and select them. We can't use jQuery so we have to rely on the native JavaScript methods for working with the DOM.</p>\r\n\r\n<pre>\r\nvar container = document.querySelector(el);\r\n\r\nif(!container) {\r\n console.error('Please specify the correct class of your gallery.');\r\n return;\r\n}\r\n\r\nvar firstSmallImage = container.querySelector('.small-preview');\r\nvar zoomedImage = container.querySelector('.zoomed-image');\r\n\r\nif(!zoomedImage) {\r\n console.error('Please add a .zoomed-image element to your gallery.');\r\n return;\r\n}\r\n\r\nif(!firstSmallImage) {\r\n console.error('Please add images with the .small-preview class to your gallery.');\r\n return;\r\n}\r\nelse {\r\n // Set the source of the zoomed image.\r\n zoomedImage.style.backgroundImage = 'url('+ firstSmallImage.src +')';\r\n}</pre>\r\n\r\n<p>In the last line of the above code we take the image source of one of the preview images and set it as the background of our zoomable element. This happens as soon as <code>vanillaZoom.init(galleryId)</code> is called, making sure that our gallery doesn't stay empty.</p>\r\n\r\n<p>We do the same when one of the previews is clicked. This allows the user to select which image they want magnified.</p>\r\n\r\n<pre>\r\ncontainer.addEventListener("click", function (event) {\r\n var elem = event.target;\r\n\r\n if (elem.classList.contains("small-preview")) {\r\n zoomedImage.style.backgroundImage = 'url('+ elem.src +')';\r\n }\r\n});\r\n</pre>\r\n\r\n<p>Selecting Images</p>\r\n\r\n<p>The magnifier element has a couple of event listeners attached to it. The first one is activated when the cursor enters the element, increasing the size of the background image, thus creating a zoom effect.</p>\r\n\r\n<pre>\r\nzoomedImage.addEventListener('mouseenter', function(e) {\r\n this.style.backgroundSize = "250%"; \r\n}, false);</pre>\r\n\r\n<p>Since the image is now very large, it won't fit in the container and only part of it will be visible. We want users to be able to select which portion of the image is magnified so we add a mousemove listener that changes the background position.</p>\r\n\r\n<pre>\r\nzoomedImage.addEventListener('mousemove', function(e) {\r\n\r\n // getBoundingClientReact gives us various information about the position of the element.\r\n var dimentions = this.getBoundingClientRect();\r\n\r\n // Calculate the position of the cursor inside the element (in pixels).\r\n var x = e.clientX - dimentions.left;\r\n var y = e.clientY - dimentions.top;\r\n\r\n // Calculate the position of the cursor as a percentage of the total size of the element.\r\n var xpercent = Math.round(100 / (dimentions.width / x));\r\n var ypercent = Math.round(100 / (dimentions.height / y));\r\n\r\n // Update the background position of the image.\r\n this.style.backgroundPosition = xpercent+'% ' + ypercent+'%';\r\n\r\n}, false);</pre>\r\n\r\n<p>Magnifying Specific Part of Image</p>\r\n\r\n<p>When the cursor leaves the magnified image we want it to go back to normal. This is easily done by returning the background size to <code>cover</code> and the background position to <code>center</code>.</p>\r\n\r\n<pre>\r\nzoomedImage.addEventListener('mouseleave', function(e) {\r\n this.style.backgroundSize = "cover"; \r\n this.style.backgroundPosition = "center"; \r\n}, false);</pre>\r\n\r\n<p>And with that, we are done!</p>\r\n\r\n<h2>Browser Support</h2>\r\n\r\n<p>The library should work in all modern desktop browsers, although some of the flexbox CSS may not be displayed properly on older IE.</p>\r\n\r\n<p>Sadly, the zoom effect doesn't translate very well to touch devises. Because of this and the limited screen space, it's best to present your images in another way for mobile. In our CSS we've simply hidden the zoom element and listed the images vertically but you can try other solutions such as a carousel.</p>\r\n\r\n<h2>Conclusion</h2>\r\n\r\n<p>You can get the full source code for this article, as well as the demo code (with images courtesy to <a href=\"https://burst.shopify.com/\" target=\"_blank\">Burst</a>), from the <strong>Download</strong> button near the top of the page. You are free to use the library in all your projects, commercial or personal (<a href=\"https://tutorialzine.com/license\" target=\"_blank\">our license</a>). Happy coding!</p>\r\n', 'image-zoom-library-with-vanilla-js.jpg', '2020-08-07 19:10:22', 15, 2),
(47, 'Get Instagram Feed Data without Code', '<p>Ever had to access Instagram API and had to go through the confusing facebook docs, I have seen a friend go through the Facebook docs for hours and still not able to get it working. We need an easier way to access Instagram API, it could be to embed it on our portfolio or basically to do anything with it.</p>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--S2iZncnq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/esgjssiai5cvu3omzyte.gif\"><img alt=\"Gif\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--S2iZncnq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/esgjssiai5cvu3omzyte.gif\" /></a></p>\r\n\r\n<p>Me trying to understand Facebook docs.</p>\r\n\r\n<p>So yeah, this is exactly what we are trying to solve with <a href=\"https://instafeedapi.com\">InstaFeedAPI</a>, no need to go through the confusing docs or read every single thing and pass weird parameters with no explanation to get your own feed.</p>\r\n\r\n<p>So we have read the docs for you & we have done it the right way, all you need is the token for your Instagram account and that's it (literally). You just paste it in our dashboard and get an API.</p>\r\n\r\n<h3>What are we doing today?</h3>\r\n\r\n<ol>\r\n <li>Get your Instagram Long-lived token</li>\r\n <li>Fill a two-step form</li>\r\n <li>Voila, you have an Instagram feed API ready.</li>\r\n</ol>\r\n\r\n<h2>Get the token</h2>\r\n\r\n<h3>1. Make a Facebook app</h3>\r\n\r\n<p>Open Facebook Developer portal<br />\r\n<a href=\"https://developers.facebook.com/apps/\">https://developers.facebook.com/apps/</a></p>\r\n\r\n<p>If you're doing this for the first time, join the FB developers portal by logging in.</p>\r\n\r\n<p>Click on <strong>Get Started on top</strong> -> <strong>Verify your account</strong></p>\r\n\r\n<p>After clicking on <strong>Create App</strong>, click on <strong>"For Everything Else"</strong> from the popup. Give your App a Name.</p>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--WDefbS5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0ydb65laghkukpg844a1.png\"><img alt=\"Instagram APP\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--WDefbS5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/0ydb65laghkukpg844a1.png\" /></a></p>\r\n\r\n<h3>2. Add Instagram Testers</h3>\r\n\r\n<p>Now select <strong>Instagram</strong> from the set of Facebook products, as we want the Instagram feed.</p>\r\n\r\n<p>You will be taken to an agreement page, select <strong>Basic Display</strong> from the sidebar click on <strong>Create App</strong>, give it a name again and you will now be seeing the Instagram developer console.</p>\r\n\r\n<p>Scroll down and you will be able to see a section called <strong>User Token Generator</strong> & Click on <strong>Add or Remove Instagram Testers.</strong></p>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--ibqvk49z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vpu3fayg3a07y5ztapoe.png\"><img alt=\"Add Tester\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--ibqvk49z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vpu3fayg3a07y5ztapoe.png\" /></a></p>\r\n\r\n<p>Scroll down and add the Instagram username of whose feed you want in the API, <strong>this only works for accounts that are set as public and you will not be able to access private accounts.</strong></p>\r\n\r\n<p>Let's add our own account username and accept the testing invite by accessing this link <a href=\"https://www.instagram.com/accounts/manage_access/\"><code>https://www.instagram.com/accounts/manage_access/</code></a></p>\r\n\r\n<p>Once done come back to the Facebook developer portal, open your app, click on <strong>Basic Display</strong> and click <strong>Generate Token</strong>.</p>\r\n\r\n<p>You now have finally generated an <strong>Instagram access token</strong>, keep this somewhere aside.</p>\r\n\r\n<h3>Video Tutorial about getting Token</h3>\r\n\r\n<p> </p>\r\n\r\n<p> </p>\r\n\r\n<h2>Insta Feed API.</h2>\r\n\r\n<p>So, all you have to do is create an account in <a href=\"https://instafeedapi.com/signup\">https://instafeedapi.com/signup</a> and give yourself a username.</p>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Sl4pJFbl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rkgz7jyj7d6swhgai3aw.jpeg\"><img alt=\"Setup Account\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--Sl4pJFbl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rkgz7jyj7d6swhgai3aw.jpeg\" /></a></p>\r\n\r\n<p>Click on Create Instagram API button, once done you will be seeing a form like below, just give your API a name and enter your Instagram token.</p>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--261oErXI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1vopoeccpdb4jhk500nk.jpeg\"><img alt=\"Make API\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--261oErXI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1vopoeccpdb4jhk500nk.jpeg\" /></a></p>\r\n\r\n<p>Your API will be listed and you can create more APIs with different accounts if you like.</p>\r\n\r\n<p>Click on the API and there you have it an API endpoint which will return you a list of your Instagram feed in a clean JSON format.</p>\r\n\r\n<p><a href=\"https://res.cloudinary.com/practicaldev/image/fetch/s--GxAPDGcR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4tgfjk28ts7tbxpqwvdh.jpeg\"><img alt=\"InstaFeedAPI docs\" src=\"https://res.cloudinary.com/practicaldev/image/fetch/s--GxAPDGcR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4tgfjk28ts7tbxpqwvdh.jpeg\" /></a></p>\r\n\r\n<p>You can also pass limit, before & after parameters to our endpoint to have quick filters.</p>\r\n\r\n<p>Website: <a href=\"https://instafeedapi.com\">https://instafeedapi.com</a><br />\r\nPricing Page: <a href=\"https://instafeedapi.com/pricing\">https://instafeedapi.com/pricing</a></p>\r\n', 'dwvsjs9gyl4szykr0ppl.png', '2020-08-07 20:05:41', 1, 8);
-- --------------------------------------------------------
--
-- Table structure for table `author`
--
CREATE TABLE `author` (
`author_id` int(11) NOT NULL,
`author_fullname` varchar(100) NOT NULL,
`author_desc` varchar(255) NOT NULL DEFAULT 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil voluptatibus in ullam eum corrupti reiciendis.',
`author_email` varchar(100) NOT NULL,
`author_twitter` varchar(100) NOT NULL DEFAULT 'loujaybee',
`author_github` varchar(100) NOT NULL DEFAULT 'loujaybee',
`author_link` varchar(100) NOT NULL DEFAULT 'loujaybee',
`author_avatar` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `author`
--
INSERT INTO `author` (`author_id`, `author_fullname`, `author_desc`, `author_email`, `author_twitter`, `author_github`, `author_link`, `author_avatar`) VALUES
(1, 'Quincy Larson', 'Georgi is a computer science student who loves web development, writing code and crafting interfaces.', '[email protected]', 'loujaybee', 'loujaybee', 'loujaybee', 'avatar-2.png'),
(2, 'Samantha Ming ', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil voluptatibus in ullam eum corrupti reiciendis.', '[email protected]', 'loujaybee', 'loujaybee', 'loujaybee', 'avatar-1.png'),
(8, ' Bartosz Pietrucha ', 'Fullstack engineer, https://angular-academy.com founder, speaker, trainer, software consultant. I can help you with Angular and reactive architecture. ', '[email protected]', 'pietrucha', '', '', 'cc5d5f49-30e6-41be-9cc4-82f44c2cf1d9.webp');
-- --------------------------------------------------------
--
-- Table structure for table `category`
--
CREATE TABLE `category` (
`category_id` int(11) NOT NULL,
`category_name` varchar(100) NOT NULL,
`category_image` varchar(255) NOT NULL,
`category_color` varchar(10) NOT NULL DEFAULT '333333'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`category_id`, `category_name`, `category_image`, `category_color`) VALUES
(1, 'Web Development', '1 9npNPVH7iNJ64Koq7EcW5A.jpeg', '#4BB92F'),
(2, 'CSS', 'android.png', '#0078ff'),
(4, 'JQuery', 'dataScience.jpg', '#8d00ff'),
(14, 'Front End Dev', 'Front-end-developemtn-1.png', '#247ba0'),
(15, 'Javascript', 'sasasasa', '#ff8700'),
(16, 'Git', '', '#5bd770');
-- --------------------------------------------------------
--
-- Table structure for table `comment`
--
CREATE TABLE `comment` (
`comment_id` int(11) NOT NULL,
`comment_username` varchar(100) NOT NULL,
`comment_avatar` varchar(255) NOT NULL DEFAULT 'def_face.jpg',
`comment_content` text NOT NULL,
`comment_date` datetime NOT NULL DEFAULT '2020-02-14 10:28:00',
`comment_likes` int(11) NOT NULL DEFAULT 0,
`id_article` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `comment`
--
INSERT INTO `comment` (`comment_id`, `comment_username`, `comment_avatar`, `comment_content`, `comment_date`, `comment_likes`, `id_article`) VALUES
(1, '250871902', 'def_face.jpg', 'This is a comment test 1', '2019-07-07 09:28:00', 0, 40),
(2, '989786379', 'def_face.jpg', 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic', '2019-03-15 10:28:00', 0, 27),
(3, '378052515', 'def_face.jpg', 'This is an advanceed test', '2020-02-14 10:28:00', 0, 26),
(4, '378052515', 'def_face.jpg', 'This is an advanced test 2', '2020-01-05 11:28:00', 0, 26),
(5, '784031346', 'def_face.jpg', 'this is a comment 2', '2019-05-21 11:28:00', 0, 40),
(6, '2076925118', 'def_face.jpg', 'This is a comment test 5\r\nThis is a comment test 4\r\nThis is a comment test 3', '2020-02-18 17:16:12', 0, 40),
(7, '1249945059', 'def_face.jpg', 'Thank you for taking the time to write such an elaborate advice!🙌', '2020-02-18 17:16:50', 0, 6),
(8, '1884119267', 'def_face.jpg', 'this is s comment 1', '2020-02-18 17:21:43', 0, 17),
(9, '418132487', 'def_face.jpg', 'sasajsasas', '2020-02-18 17:46:10', 0, 41),
(10, '577317656', 'def_face.jpg', 'kdjkzhdzdjizjdz', '2020-02-19 11:34:23', 0, 27),
(11, '468461801', 'def_face.jpg', 'sasasasasasasasa', '2020-08-05 14:48:37', 0, 26),
(12, '1931903981', 'def_face.jpg', 'Test Comment', '2020-08-07 15:00:04', 0, 40),
(13, '1918947887', 'def_face.jpg', 'sasasasajsasa', '2020-08-07 19:37:34', 0, 40),
(14, '202906189', 'def_face.jpg', 'test comment', '2020-08-07 19:38:22', 0, 40),
(15, '1835186045', 'def_face.jpg', 'sajshasasa', '2020-08-07 19:38:44', 0, 40),
(16, '910296642', 'def_face.jpg', 'sasasas', '2020-08-07 19:38:56', 0, 40),
(17, '564956375', 'def_face.jpg', 'hhhhhhhhhhhhhhhh', '2020-08-07 19:39:13', 0, 40),
(18, '697303869', 'def_face.jpg', 'Test comment', '2021-10-07 17:53:32', 0, 40),
(19, '500715459', 'def_face.jpg', 'Test comment', '2020-08-07 19:56:21', 0, 44),
(20, '1893422093', 'def_face.jpg', 'yyyyyyyyyyyyyyyyyyyy', '2020-08-07 20:00:02', 0, 44),
(21, '1397021679', 'def_face.jpg', 'hcuzifzefd', '2020-08-07 20:32:34', 0, 47),
(22, '1613781666', 'def_face.jpg', 'salam', '2020-08-07 20:43:06', 0, 47);
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`email` varchar(255) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`created_at` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `email`, `username`, `password`, `created_at`) VALUES
(1, '[email protected]', 'admin', '$2y$10$ss5ZCOfLJprUwB5CyMKZ4.eRWKbtRxgG19g0sm/INzDOQuMIbawrm', '2020-08-08 11:46:05'),
(3, '[email protected]', 'test', '$2y$10$7gy27M9yBNjzQkY.Aklo3.JVMkKZia9MAqmXH8zdKuSQwkz5UeOtm', '2020-08-08 12:38:59');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `article`
--
ALTER TABLE `article`
ADD PRIMARY KEY (`article_id`),
ADD KEY `article_category` (`id_categorie`),
ADD KEY `article_author` (`id_author`);
--
-- Indexes for table `author`
--
ALTER TABLE `author`
ADD PRIMARY KEY (`author_id`);
--
-- Indexes for table `category`
--
ALTER TABLE `category`
ADD PRIMARY KEY (`category_id`);
--
-- Indexes for table `comment`
--
ALTER TABLE `comment`
ADD PRIMARY KEY (`comment_id`),
ADD KEY `comment_article` (`id_article`);
--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `username` (`username`),
ADD UNIQUE KEY `email` (`email`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `article`
--
ALTER TABLE `article`
MODIFY `article_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=48;
--
-- AUTO_INCREMENT for table `author`
--
ALTER TABLE `author`
MODIFY `author_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
--
-- AUTO_INCREMENT for table `category`
--
ALTER TABLE `category`
MODIFY `category_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=17;
--
-- AUTO_INCREMENT for table `comment`
--
ALTER TABLE `comment`
MODIFY `comment_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=23;
--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `article`
--
ALTER TABLE `article`
ADD CONSTRAINT `article_author` FOREIGN KEY (`id_author`) REFERENCES `author` (`author_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `article_category` FOREIGN KEY (`id_categorie`) REFERENCES `category` (`category_id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Constraints for table `comment`
--
ALTER TABLE `comment`
ADD CONSTRAINT `comment_article` FOREIGN KEY (`id_article`) REFERENCES `article` (`article_id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;