 Selamat pagi, semua! Selamat pagi, semua! Sekurang-kurangnya saya dapat dengar beberapa bahagian selepas makan tengah hari. Baiklah, masa untuk tidur sekarang. Baiklah, idea original ini bermakna untuk bercakap 40 minit. Kerana kita mempunyai banyak speakers yang hebat untuk konferensi tahun ini, Michael minta saya jika saya boleh sebenarnya meletakkan bercakap 15 minit lagi. Apabila saya bersiap-siap saya gembira Michael minta saya untuk bersiap-siap untuk bercakap 15 minit lagi. Nama saya S.J. Saya gembira saya berkongsi bahagian yang sama sebagai salah satu orang-orang yang paling hebat dalam cerita. Steve Jobs. Tetapi nama saya adalah Solyin Jinnata, bukan Steve Jobs. Saya tidak berkongsi Steve Jobs dalam segala cara. Dia memang menginspirasi saya dalam perjalanan sekarang saya. Saya seorang pembentangan di Pixel Onion. Pixel Onion adalah pengalaman dan untuk menjual di Singapura. Sebelum saya membeli-belah, saya ingin membuat satu perjalanan di sini. Saya bukan program yang sangat baik. Sebelumnya. Baiklah, saya boleh membaca dan menerima kota. Berkata-kota yang cukup untuk pembangunan lain untuk mengambil kota yang saya menerima. Mereka menggunakan nama yang menerima nama yang menerima, yang menghubungi, menghubungi dan membuat sistem yang baik. Tapi pasti saya pasti lebih daripada suatu orang di dalam bilik ini, atau mungkin lebih daripada 80% orang di dalam bilik ini, boleh menerima program PSP yang lebih baik daripada saya. Atau mempunyai pembentangan OOP di atas tangan awak. Jadi kenapa saya membuat perjalanan ini? Ia berkongsi dengan dan kenapa saya bercakap? Ia berkongsi dengan jalanan saya untuk menjadi pembentangan baik. Jadi saya akan berkongsi jalanan awal saya. Saya memulai pembentangan sebagai hubungan apabila saya berkongsi sekitar 12 tahun lepas. Saya memulai logo. Siapa yang membuat logo sebelumnya? Wow! Ya, akhirnya. Saya sangat gembira dari pelajar saya kemudian. Pembentangan Pembentangan Pembentangan saya di sekolah tinggi junior saya. Kemudian, saya mencari basic. Jangan rasa nostalgic mencari segala-galanya screenshot CGA. Kemudian, saya mencari diri saya untuk melakukan sesuatu yang susah. Ia mungkin adalah keputusan yang mencari hidup saya. Saya mencari diri saya untuk mencari single player mastermind dari scratch, menggunakan basic. Saya melakukannya. Menurut saya, saya tidak mencari pembentangan basic. Saya ingin mencari berapa banyak pembentangan yang saya gunakan sebenarnya. Hal ini membuat saya rasa pembentangan adalah mudah. Saya dapat selalu melakukannya sebagai hubungan. Sekarang, cepat ke universiti. Saya tidak mengambil pembentangan komputer. Saya ingin mengambil pembentangan elektronik. Pada tahun ketiga, semasa sesi LAP assembly language saya mengambil pembentangan microprocessor dan kemudian, saya mencari pembentangan Star Wars opening theme dengan satu-satunya pembentangan dengan pembentangan LAP. Kemudian, setelah saya bergerak, saya mencari pembentangan pertama saya dengan teman lain dan menggunakan pembentangan pembentangan pembentangan pembentangan pembentangan pembentangan pembentangan pembentangan. Juga sayaAPPLAUSE saya melнить supkan dulu bagi saya juga. Sekarang semua分享 ini pada kali saya occurred series, saya j Gör program dan menglibat conducted mele siege Drupal. Okey. Bukan untuk menghubungkan sponsor go-go kita. Dalam parallel universe, mungkin adalah logo-logo di sana, kan? Deon bukan di sini, kan? Di luar. Okey, bagus. Jadi, sedikit introduksi di sini untuk orang yang belum dengar Drupal. Ia adalah sistem konten-konten yang terbuka, seperti Drupal. Ia mengubungkan diri sendiri dan menjadi framework konten-konten. Ia mempunyai beberapa websites di dunia dunia, seperti White House, MSNBC, Streets Times di Singapura. Di online hari ini, websites universiti seperti Stanford dan Singapura Manajemen Singapura. Drupal mempunyai tanda-tanda model kontributasi, yang dapat diperkenalkan di Drupal.org. Well, ya, terlalu beruntung. Saya berada di luar dengan Drupal di pertama luar. Ia mempunyai keluarga saya di luar yang menjadi penyelidik match dan memperkenalkan saya ke Drupal 6 tahun lalu. Tapi hubungan itu telah diperkenalkan sejak hari ini. Ia adalah hubungan yang sangat berharga dengan Drupal, yang saya percaya telah membantu saya menjadi penyelidik yang lebih baik. Untuk orang-orang yang memperkenalkan sesi pekerjaan kerja saya pada hari tutorial, saya dapat tahu bahawa bahagian yang lain akan menghubungi apa yang saya katakan pada hari tutorial. Untuk memberikan konteks untuk orang lain, pada sesi pekerjaan tutorial, saya berkata bahawa apabila Drupal pembangunan Drupal, dia atau dia harus menghubungi satu perkara. Boleh orang-orang ingat apa yang ini? Maaf? Jangan menghubungi korek. Ya, itu satu perkara. Jadi ini apa yang saya berkongsi. Drupal pembangunan di luar harus menghubungi untuk mencari. Jadi saya percaya ini adalah apa yang kita berkongsi sebagai apa yang kita nampak Drupal. Konteknya di sini adalah bahawa Drupal pembangunan yang berbeza daripada Drupal pembangunan. Drupal pengalaman yang membuat perjalanan dan ingin perjalanan untuk menjadi kelebihan, dan pengalaman perlu memahami kelebihan Drupal. Ini adalah apa yang kita nampak Drupal. Dan hanya apabila kita benar-benar benar-benar perlu, kita menulis kode custom kita sendiri. Jadi apabila masa untuk anda menulis Drupal, anda harus pastikan anda mengikuti kode standard, kelebihan Drupal, kelebihan desain di Drupal. Terutamanya dari pengalaman dan kelihatan sejauh ini tidak benar-benar Drupal pembangunan, kelihatan sejauh ini. Saya membuat kesilapan yang sama juga apabila saya bermula. Ini adalah apabila perjalanan saya sebenarnya bermula. Saya bercakap dengan beberapa orang pada hari ini dan mereka berkata bahawa bahawa tanda-tanda di konferensi ini adalah cukup basic. Saya menulis juga bahawa bercakap dengan contoh yang benar-benar basic di sini. Tidaknya, bahawa perkara basic seperti syarikat syarikat, ini adalah perkara yang benar-benar basic dan perkara yang penting. Ia adalah kesilapan yang saya telah melihat bahawa banyak pembangunan terus melakukan dari masa ke masa. Jadi saya akan berkongsi lebih banyak perkara basic dan bagaimana saya belajar menjadi program yang lebih baik mengenai bagaimana Drupal sebenarnya menghantar kelihatan yang benar-benar. Ini adalah apa yang saya menulis yang terakhir apabila saya menggunakan projek lain. Saya menulis kelihatan kelihatan yang benar-benar. Terima kasih kerana menulis kelihatan di SJ Store. Apa yang berlaku? Saya dapat melihat kelihatan yang dihantar kelihatan kelihatan. Ia bukan cara yang benar-benar berkongsi, tetapi ia berlaku. Ini saya sebagai Drupal Noob. Sebelum beberapa tahun lalu, saya menulis kelihatan kelihatan. Saya hanya menulis kelihatan yang sama. Saya tidak dapat menulis kelihatan di sisi yang Pride MurAir untuk teruskan. Beri kelihatan segera, saya menulis kelihatan dalam pemberitaan penyidupan peribadi sayamencukupkan beberapa kelihatan yang telah digunakan di seluruh masa, saya merancang kelihatan kelihatan yang di-hantar asalnya sebuah perkara. Saya juga menunjukkan semuanya dengan cakap baik-baik yang telah saya beri. Saya menulis kelihatan yang tidak di-hantar Itulah sebab, hey, Drupal adalah MVC, model-view controller. So, what it means is that it's a clear separation of data structure, presentation layer, and the business logic. In Drupal, database and module cover the data structure and the business logic, and theme cover the presentation. As you can see, there are separate folders where you can put the modules and themes. And inside the modules itself, you can separate it into concrete modules and the custom modules. Now, so what happened then? How should we do it in Drupal, right? I actually should look for a better example, but yeah, this example probably just show more of the model and the view, where the model is really the database schema, and then you assign the database value to a variable, and then the view layer is the one who actually render it. So, this is the format of a tweak template engine for Drupal 8. Now, so that's MVC. So, I learned about MVC on my first day of touching Drupal. And the bottom block here actually lead me to the next discussion, which is the multi-language feature in Drupal. It's available since Drupal 6, actually. And it is not funny when client actually ask you to create the same site in another language, and then you quote them, eh, it's the same effort as the first default language, right? So, well, sadly, again, I saw this kind of similar mistakes in some of the Drupal sites that we took over. And what you see here is actually the pattern, the new pattern for tweak, right? So tweak, as I said, template engine for Drupal 8, responsible for rendering the HTML code. In Drupal 7 and before, to translate text, we use the T function. But now T function become a tweak filter. And this allows any text in the website to be translatable to other languages easily by configuring it in the admin page, right? And the T function actually leads me to the next learning, cross-site scripting. Island that cross-site scripting happens when HTML page produce HTML code. That is not the same as the intended HTML code, right? And cross-site scripting is really one of the top security vulnerabilities in the world, but I keep seeing that a lot of developers actually keep doing this again and again. However, yeah, so, so what we do in Drupal is that there is this feature called, this function called sanitization. So through the T function, it's the same T function, Drupal kind of like filter or sanitize the text to be rendered and strip off the HTML, JavaScript, and PHP which may come from the value of that title variable here, right? Okay, now, this is a code for Drupal 7, by the way, right? Now sanitization is also used for data entry to ensure that input the user enters to the database is sanitized first. Otherwise, it will lead to SQL injection, right? You don't sanitize the input. You may have, you may run the risk of SQL injection. So this is also one of the top security risk. The example here shows that, shows the select query, but SQL injection can happen much, much earlier even in the insert or the update query, right? Without sanitization, the SKU variable that you see here may contain SQL query. And you really don't want user to insert query which erases all the tables of your database, right? So it's good to sanitize first. So again in Drupal 7, there's this pattern where we can actually sanitize the variable before we actually run the pass it to the database abstraction layer. The bottom example here shows a better model with the database abstraction. The top one is more on the legacy code from Drupal 6. So all the examples I gave so far are specific on Drupal, but not necessarily problem that we face on Drupal websites. It happens on every kind of websites. It's a common problem for programmer who just learn a little bit and thinking that he can do a lot like me, right? When I first started. So when I first started to learn PHP, my only resource was W3 schools which who learned from W3 schools before? Well, it was not really teaching it the right way. So how do I get to learn about all these PHP programming best practices is by learning the proper Drupal module development and reading through some of the better widely used contributed modules and core modules, right? So there's a caveat here that Drupal won't solve all your issues. Not Drupal is the best architecture to follow for every project. As any other tools and platform, there are pros and cons of using Drupal, sure, right? So nowadays, you can actually use there's PHP the right way. In the past, like two weekends, there were workshops on PHP the right way in Singapore. If you miss it, I don't know, maybe in the future Michael will organize another one. So and I continue to learn PSR4 what is namespacing, auto-loading, what is the proper way of doing object-oriented programming, what is services, what service containers, what's dependency injection, what's event dispatcher in symphony, what's big pipe for there's a cash system that's used by Facebook and it will be available in Drupal 8.2.0. And to be honest, some of this concept, I'm still learning myself too. And I often get overwhelmed by it. But there's still hope and the next slides I'll show the resources which are specifically meant for Drupal. But this is just a way to show that there are help out there, right? Learning good programming skills by copying from good programmers just like, well, Samsung probably copy Apple and now their Note 7 is probably one of the best smartphones out there. So how did I learn last time? I read documentation. Luckily, Drupal is Drupal documentation is probably one of the most complete for open source project. So you can head on to Drupal.org search for different topics, right? Model development and in no time you will touch on coding standards, for example, how you should use two spaces rather than a tab character for indentation or how you should use the opening PHP tag but not the closing PHP tag and so on and so forth, right? And in no time again you will touch on writing secure code and finally, obviously, you will need to touch on the teaming layer so you can learn about the tweak coding standard there. I subscribe to newsletter. There may be newsletter for WordPress for any other programming language or platforms out there, right? But these are the newsletter that I subscribe to, Drupal.org newsletter and the weekly drop. I look for good tutorials. One of the best, one of my favorite one now is a K&P University where it provides the tutorials for Drupal 8 as well as a symphony. Drupalise me has always been my friends since I started learning Drupal, build the module.com or as training.com and of course, PHP the right way.com, right? Look for mentors. There are mentors everywhere. You can go to Drupal.org, look for people to actually just connect up with people there. There are more than willing to actually mentor you. Go to the IRC or any channel of your favorite programming platform or framework, right? And well, if you are more advanced, you should become a mentor to yourself, right? You will learn more. 10 events, 10 local and overseas meetups, camps, conferences. I run the Drupal meetup here in Singapore. Ya, sadly, we are a bit inactive for the past six months, but anyone interested to help me out, organize future meetups, feel free to approach me. And I'm active in the agile community as well where I'll be helping in the agile conference coming in October. And that's a photo of me and Rasmus in the last year's PHP conference. And not only 10 events, but also speak at the events. So by speaking, you'll learn a lot more. Not only the topic that you're covering, but also learn the soft skill which makes us better programmer in the end. Communication skills. This is something that I would say that is one of the most important skills to have as programmer. You want to become a better programmer? Learn communication skills well. Before I close my session today, I'd like to highlight the following article by Godfrey Chan. Not sure if you heard of Godfrey before. Probably not in this community. So he is probably more well known in the Ruby community. And it just happened that his medium article circulating in my Facebook stream. So this is the link. Rethinking computer science education. And it was delivered at brand.ruby that just passed if I'm not wrong in Singapore. So one thing that I'd like to highlight here is that the journey for non-computer science background programmer, hobbies, may be longer and more difficult. But you just need to strive, you'll get there. There's no guarantee that people who have CS background will be there faster, either. In Singapore, we have our own very own role model. Michael Chang. Well, his background is not computer science, safflon programmer. And he's my sources of inspirations too. Thank you. Summary. So, you learn any programming, learn by reading a lot, learn by copying a lot, be active in the community, practice communication skills, and you will reach there one day. Okay. How to reach me? sjapixonion.com, that's my email. And you can find me in Drupal.org with a handler, Lozi Ju. I'm active in the Drupal Singapore Facebook Group, as well as the Singapore PHP Facebook Group. And last but not this, sjapixonion.com is looking for Drupal Developer, Symphony Developer, and Drupal Site Builder. If you are interested, come and look for me during tea break-off. Drop me an email. Thank you.