Showing posts with label Coding. Show all posts
Showing posts with label Coding. Show all posts

Tuesday, May 15, 2018

How to Extract Multiple Integers from a String Input with Python

"How do I extract multiple integers from a string input?" is a very common question.

The most common answer is "use map( )."

Nope. There are many ways to extract multiple integers from a string, like using map( ) or the ast module or writing your own function. If you use these methods, it's cool because all of them work.

The problem is that these are not good answers for new Python learners. Functions like map( ), filter( ) and reduce( ) belong to a different style of programming called functional programming. The ast module depends on the user to provide input in the correct format. And writing your own function is redundant because Python already has elegant, built-in solutions.

Introducing LIST COMPREHENSIONS and GENERATOR EXPRESSIONS, to those who didn't already know.

These are built-in Python tools to process items in a list/tuple/dict/set or other iterators. I won't go into details; you can read about them on the internet. Instead, I'd like to show three examples.

A list comprehension can process a string of integers and return a list of those integers.

```
>>> s = input( )
1 2 3
>>> x = [ int( i ) for i in s.split( ) ]
>>> x
[ 1, 2, 3 ]

```

A generator expression can be used to process a string of integers and get a tuple.

```
>>> s = input( )
1 2 3
>>> x = ( int( i ) for i in s.split( ) )
>>> x
( 1, 2, 3 )

```

You can also use a generator expression to assign the extracted integers to individual variables.

```
>>> s = input( )
1 2 3
>>> a, b, c = ( int( i ) for i in s.split( ) )
>>> a
1
>>> b
2
>>> c
3
>>> a + b + c
6

```

That's all. Note that these methods work for any numerical data type, not just integers.

If you're used to map( ), then by all means continue using it because it's a great tool. But please, let us not propagate the use of map( ) to new Python learners, when a simple 'for' loop is more Pythonic and can be used to do the job neatly and efficiently.

- Sharif Muhaha

Sunday, May 13, 2018

যে প্রজেক্টটা অলরেডি অনেকদূর ডেভলপ করা হয়েছে অন্য ডেভলপার দ্বারা। সেই ডেভলপারের বদলে আপনাকে দায়িত্ব দেয়া হলো।

"ধরুন, আপনাকে একটা প্রজেক্টের জন্য হায়ার করা হলো, যে প্রজেক্টটা অলরেডি অনেকদূর ডেভলপ করা হয়েছে অন্য ডেভলপার দ্বারা। সেই ডেভলপারের বদলে আপনাকে দায়িত্ব দেয়া হলো।

প্রজেক্ট এর কোডবেজ ওপেন করেই বুঝলেন অনেক কপ্লেক্স আর পেচানো হয়ে আছে এবং আগের ডেভলপার তার পার্সোনাল ফ্লেভারে ডেভলপ করেছে (কমেন্ট, ডক স্ট্রিং ইত্যাদি বলতে গেলে নেই)।

এই মুহুর্তে আপনার দায়িত্ব কি হবে?

অর্থাৎ আরেকজন ডেভলপারের কোনো লার্জ স্কেল প্রজেক্ট এ আপনাকে মডিফাই, আপডেট, বাগ ফিক্স, নতুন কিছু এড ইত্যাদি কাজ করতে দিলে আপনি কিভাবে আগাবেন?"

**কোড পড়ে বুঝতে হবে প্রথমে । এইটা চ্যালেন্জিং হবে । অন্য ডেভেলপারের জানার বা স্কিলের ঘাটতি থাকতে পারে, যেমনটা আমারও আছে, তাই তার কোড যত বেশী জাজমেন্টাল হয়ে এ্যানালাইজ করতে যাবেন, নিজের মধ্যে ততো বেশী বায়াস কাজ করবে, ভিতর থেকে একটা বাধা আসবে । জাজমেন্টাল হওয়া যাবে না ।

আগের ডেভেলপারের স্টাইলটা বোঝার চেষ্টা করতে হবে, তাহলে কোড এক্সপ্লোর করতে পরে সুবিধা হবে । মডার্ন আইডিই ব্যবহার করতে হবে যাতে দ্রুত কোড এক্সপ্লোর করা যায়, প্রয়োজন হলেই যাতে ক‌োথায় কি হচ্ছে সেটা সহজে খুজেঁ পাওয়া যায় ।

আগের ডেভেলপারের কোড এবং প্রোডাক্ট রিকয়ারমেন্ট বুঝে ফেললে কাজ করতে খুব একটা অসুবিধা হবে না ।

যদি বিজনেস ফাস্ট পেইসড হয় এবং রেগুলার আপডেট দরকার হয় তাহলে এবার আপনি নতুন ফিচার এ্যাড করুন, বাগ ফিক্স করুন, নিজের নতুন কোড যতটুকু পারা যায় স্ট্যান্ডার্ড মেইনটেইন করে লিখুন । সেই সাথে সাথে পুরানো কোড অল্প অল্প করে রিফ্যাক্টর করুন ।

আর যদি দেখেন প্রোডাক্ট মার্কেটে ভালো পজিশনে আছে, মেইনটেন্যান্স করার মত সময় হাতে আছে, তাহলে ম্যানেজমেন্ট এর সাথে কথা বলে ২-৩টা রিফ্যাক্টর স্প্রিন্ট শুরু করুন ।

বিজনেস ভ্যালু কে আমি সবসময়ই কোড কোয়ালিটির চেয়ে প্রাধান্য দিবো । বিজনেস সফল হলে পরে রিফ্যাক্টর করা যায়, পুরোটা নতুন করে রি-রাইট করার মত সময়ও বাজেট থাকে । বিজনেস ফেইল করলে হাই কোয়ালিটি কোডও কাজে আসে না ।
- Abu Ashraf Masnun

** আগের অফিসের সিনিয়র কলিগ ভাই যিনি নিউজক্রেড থেকে এসেছিলেন, উনি বলতেন - "আমরা যদি ম্যানেজমেন্ট বা বিজনেসের কথা মাথায় না রেখে শুধু কোড কোয়ালিটি নিয়ে চিন্তা করি তাহলে সেই কোড জাদুঘরে সুন্দর করে সাজিয়ে রাখা যাবে। বিজনেস হবে না"
- Hasan Abdullah

** ১/ ল্যাঙ্গুয়েজ ফ্রেইমওয়ার্ক। প্রত্যেক ল্যাঙ্গুয়েজের (ফ্রেইমওয়ার্কেরো) কিছু নিজস্ব ডিজাইন প্যাটার্ন, বেস্ট প্রাকটিস ইত্যাদি রয়েছে, যার ফলে নিজেদের অজান্তেই প্রতি ডোমেইনের প্রোগ্রামারগণ একটা কমন ধারায় প্রোগ্রামিং করে থাকেন। যদি আপনার ভাগ্য ভাল থাকে এবং আপনার আগের প্রোগ্রামাররা সাউন্ড মাইণ্ডেড হয়ে থাকেন তাহলে আপনার বুঝে উঠতে কষ্ট করা লাগবে না। যদি তারা (অথবা আপনি) পাস্তাপ্রেমী হয়ে থাকেন, তাহলে কেউই সুখী হবেন না।

২/ ইস্যু, গিট হিস্টরি, কমিট ম্যাসেজ। দেখার চেষ্টা করুন তাদের কর্মধারা সময়ের উর্ধক্রমে। যদি এইগুলি না থাকে তাহলে, আবারো, সুখী হওয়া মুস্কিল হয়ে দাঁড়াবে।

৩/ লেয়ারে ভাগ করুন, এপিআই লেয়ার, ডাটাবেজ লেয়ার, মডেল, ভিউ, কন্ট্রোলার, আসলে এই বিভক্তি আপনার প্রজেক্টের উপর। এরপর এক একটা লেয়ার ধরুন ও সাবার করুন।

৪/ কমেন্ট ও ডকুমেন্টেশান আসলে কিছুটা ওভাররেইটেড, বিশেষ করে যদি র‍্যাপিড ডেভেলপমেন্ট ফ্রেইমওয়ার্ক অথবা প্রপার আজাইল ব্যবহার করা হয়। যেমন ধরুন, রেইলস অথবা জ্যাঙ্গো কিন্তু অনেক খানি সেলফ ডকুমেন্টিং। ওটা নিয়ে ভয় না পাইলেও চলবে।

৫/ একি কথা বলা যায় ডাটাবেস ডিজাইন ডিয়ায়াগ্রাম নিয়ে, অনেক টুল দিয়ে কিন্তু আপনি নিজেই ইন্ট্রোস্পেক্ট করে বার করে আনতে পারেন ডাটা ডায়াগ্রাম।

৬/ টেস্ট কেইস থাকলে তো সোনায় সোহাগা।
- Arnab Bagchi

Sunday, April 17, 2016

কোডিং শেখার জন্য সেরা ৫০ টি ওয়েব সাইট !

আমরা কোডিং শেখার জন্য অনেক কিছু ঘাটাঘাটি করি। কিন্তু কোনো কিছুই প্রাকটিস ছাড়া সম্ভব নয়। কেমন হয় যদি প্রাকটিসও হয় এবং সাথে সাথে শেখা… এরকমই ৫০ টা ওয়েব সাইট আজ আপনাদের সামনে তুলে ধরব… এই ওয়েব সাইট গুলো থেকে আপনি HTML, CSS, Javascript, SQL, XHTML, Bootstrap, C, C++, Python, Ruby, Android Development, Java এবং আরো অনেক কিছুই শিখতে পারবেন.

1.Codecademy
শেখার জন্য আমার দেখা সেরা ওয়েব সাইট হল কোড একাডেমি… এটা হল সেই স্থান যেখান থেকে একজন বিগিনারের জন্য পারফেক্ট প্লেস। শুরু থেকেই একজন মানুষ হতাশ হয়ে পরে কোথা থেকে শুরু করবে, কিভাবে করবে আরো অনেক কিছু এখান থেকে সহজে শুরু করতে পারবেন। এখান থেকে আপনি ওয়েব বেজ সব কিছুরই বেসিক খুব ভালভাবে আয়ত্ত করতে পারবেন।
http://www.codecademy.com/

2.Udacity
ইউডিএসিটি আরেকটা প্লেস যেখান থেকে সহযে শিখতে পারবেন। এখানে অধিকাংশ সময় ভিডিও টিউটোরিয়াল পাওয়া যায় সেগুলোর উপরে ২-৩ মিনিটের কুইজ থাকে আরো অনেক কিছুই। এখান থেকে আপনি Computer Science, Web Application Engineering, Software Testing, Web Development, HTML5, Python, Java, Computer Science, Algorithm এগুলোর ভাল টিউটোরিয়াল পাবেন।
https://www.udacity.com/

3.Google Android Development
এটা হচ্ছে এন্ড্রয়েড ডেভেলপমেন্ট শেখার জন্য বেস্ট। যারা এই এন্ড্রয়েড তৈরী করেছে তাদের কাছ থেকেই শেখেন। এখানে বেসিক থেকে এডভান্স পর্যন্ত সব কিছুই পাবেন। আর কিভাবে আপনার এপস প্লে স্টোরের জন্য রেডি করবেন সেটাও পাবেন।
https://developer.android.com/training/index.html

4.Google’s Python Class
গুগলের পাইথন ক্লাস বলা হয় এটাকে। এটা সম্পূর্ণ ফ্রী।
https://developers.google.com/edu/python/

5.Coursera
এখানে সম্পূর্ণ ফ্রী অনেক কোর্স পাবেন। এখানে কম্পিউটার সায়েন্সের অনেক ভাল ভাল টিউটোরিয়াল পাবেন। এখান থেকে Computer architecture, Programming languages, C++ for C programming, Algorithms, Artificial Intelligence, Cryptography…etc এই গুলো খুব ভাল ভাবে শিখতে পারবেন।
https://www.coursera.org/
Websites What You Will Learn

6.Code.org - Basics of JavaScript programming , Python, Hopscotch etc
7.W3Schools.com --HTML,CSS,Javascript, jQuery, Bootstrap
8.Thenewboston HTML5, CSS, Javascript, Java, Python, PHP, App Development, Android Development, C Programming.
http://thenewboston.org/
9.MIT OpenCourseWare Electrical engineering and computer science in MIT’s OpenCourseWare collection
http://ocw.mit.edu/…/electrical-engineering-and-computer-s…/
10.Khan Academy Everything what you here
https://www.khanacademy.org/
11.Webmonkey HTML5, Ajax, CSS, APIs, Javascript etc.
http://www.webmonkey.com/tutorials/
12.CodeAvengers HTML, CSS, Javascript, Python etc.
https://www.codeavengers.com/
13. Codeschool HTML/CSS, JavaScript, Ruby, iOS
http://www.codeschool.com/
14. TeamTreeHouse HTML/CSS, JavaScript, Ruby, iOS, Android, Python…
http://teamtreehouse.com/
15. Html5Rocks HTML5/CSS
http://www.html5rocks.com/en/
16. Sqlzoo SQL
http://sqlzoo.net/
17. EDX Computer Science, Java
https://www.edx.org/
18. TheCodePlayer HTML5, CSS3, Javascript, Jquery
http://thecodeplayer.com/
19. LearnPythonTheHardWay Python
http://learnpythonthehardway.org/
20. SkillCrush HTML/CSS, Javascript, Python …more
http://skillcrush.com/
21. TutsPlus WordPress Plugin Development, Webdesigning, Other Coding tutorials
http://tutsplus.com/
22. CodeCombat Play to learn code
http://codecombat.com/
23. DontFearTheInternet HTML/CSS
http://www.dontfeartheinternet.com/
24. LearnLayout Advanced CSS
http://learnlayout.com/
25. Atozcss CSS Screencasts
http://www.atozcss.com/
26. Dash HTML5, CSS3, Javascript
https://dash.generalassemb.ly/
27. Web Accessibility Tools and techniques for web developers
https://webaccessibility.withgoogle.com/course
28. TheHelloWorldProgram Web Development, Linux, Python
http://www.thehelloworldprogram.com/web-development/
29. PythonTutor Python
http://pythontutor.com/
30. CodeLearn Web Development
http://www.codelearn.org/
31. Rubymonk Ruby
https://rubymonk.com/
32. Stanford University Software Algorithms
http://online.stanford.edu/courses
33. NodeTuts Node JS video tutorials
http://nodetuts.com/
34. NodeSchool Web software skills
http://nodeschool.io/
35. Egghead Video training for AngularJS, React, D3, and many other essential modern web technologies
https://egghead.io/
36. Learn-Angular AngularJS
http://learn-angular.org/
37. IOS Development IOS
https://itunes.apple.com/…/developing-apps-for…/id395605774…
38. LearnJavaOnline Java
http://www.learnjavaonline.org/
39. CodingBat Java, Python
http://codingbat.com/
40. Techotopia IOS, Android
http://www.techotopia.com/
41. EssentialSQL SQL
http://www.essentialsql.com/
42. SqlBolt SQL
http://sqlbolt.com/
43. Coderdojo HTML5, CSS3, Javascript
http://coderdojo.com/
44. HackDesign Design course
http://hackdesign.org/
45. Mozilla Developer Network Mozilla Development
https://developer.mozilla.org/en-US/
46. Programming Video Tutorials C++
http://www.programmingvideotutorials.com/c…/cpp-introduction
47. National Programme on Technology Enhanced Learning Principles of Programming Languages
http://www.youtube.com/course
48. Landofcode Java, CSS, HTML, PHP and VBScript
http://landofcode.com/
49. SitePoint Reference HTML5, CSS3, Javascript
http://reference.sitepoint.com/html
50. Wikiversity PHP, C++, Python, Java… etc
http://en.wikiversity.org/wiki/School:Computer_Science