Thứ Sáu, 4 tháng 6, 2021

React Navigation Fix

updated 9-2-2020

Important Message about React Navigation v5

This project will be using the v4 version of React Navigation and not the v5 version. To date, this code still works as expected. The v4 version is still important to know and understand as it is used widely in existing codebases in many organizations. I highly encourage you to continue on with the course as it is so that you fully understand how React Navigation works. Once you have finished the course, you can use this as a self-study opportunity to attempt a migration of your finished working projects to v5. The docs provide some great resources on this: https://reactnavigation.org/docs/upgrading-from-4.x/.

1. React Navigation v4 Installation

note: You cannot mix Yarn and npm in the same project as it will break your dependencies. You must consistently use the same package manager. If you have yarn installed on your computer it will be used by default to generate the project. In this case, you must use Yarn to install your dependencies.

1. Install React Navigation

npm install axios

npm install react-navigation

or

yarn add react-navigation

2. Install Dependencies

expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view

3. Install React Navigation Stack

npm install react-navigation-stack @react-native-community/masked-view

or

yarn add react-navigation-stack @react-native-community/masked-view

4. Start the app and clear cache with expo r -c

2. Update Imports

Our imports in the upcoming lecture will now look like this:

Errors?

If you are still struggling with the React Navigation installation then there are likely some major dependency conflicts in your environment. In this case, we've made a boilerplate available so that you can continue with the course. Download the zip file attached to this lecture to somewhere in your C:\Users directory (Windows) or /Users directory (macOS)

Then, run npm install and then npm start.

React Navigation v4 Docs:

https://reactnavigation.org/docs/4.x/getting-started

Resources for this lecture
use icon in react native
create app react native: 
expo-cli init food 
or: npx expo-cli init food
fix cors:

 `cors-anywhere.herokuapp.com/https://api.yelp.com/v3/businesses/`

'https://cors-anywhere.herokuapp.com/https://api.yelp.com/v3/businesses/'

get params: 

https://reactnavigation.org/docs/params/

axios: 

https://github.com/axios/axios


In the upcoming lecture, we will be using the expo-cli to generate our project. To ensure that we don't accidentally mix Yarn and npm in our project, add the --npm flag:

npx expo-cli init blog --npm

Share:

Thứ Sáu, 28 tháng 5, 2021

A Web Developer’s Roadmap to Learning React Native in 2020

 

A Web Developer’s Roadmap to Learning React Native in 2020

Is it really an easy switch from web to React Native mobile development?

Photo by Zan on Unsplash

While I was working as a web developer and using Javascript, Jquery and making a lot of Ajax calls using get and post methods from frontend I came to learn about React Native (or RN)and how it helps in building iOS and Android apps with the single code base and how developers from the web who use javascript on daily basis can easily start learning or working on React Native. But hold the horses here, the learning curve and the difficulty level are not the same as that of vanilla Javascript, not even close. I have been there and did a back forth ride a couple of times to learn these technologies, so I am writing down all of them in this article for you to have a smooth journey. If you are an experienced web developer or you have fewer years of programming experience then this React Native roadmap 2020 is for you. A lot of developers can fall prey to the over-exaggerated claims. Although many will say that the official guide does not declare to learn any prereq before learning React Native. But building a mobile app with RN requires prior knowledge of using several technologies and libraries that can take a lot of time. Like some of them can take more time than the time you took to learn vanilla Javascript. So just by reading any appealing headline like React Native for JavaScript developers and jumping right into building a mobile app is like trying to step on the topmost of a ladder and missing all the rest.

Photo by Tim Grundtner from Pexels

I guess the best time to start learning mobile development is when you have experience in web development for at least one or more years. Because web development is relatively easier and by spending enough time coding you learn a lot of things like programming concepts, OOP, databases, mistakes, and how easy it is to make mistakes, how to solve the issues (by this time you are already introduced and thanking Github and StackOverflow). Besides, some web technologies may be used on the mobile or the concepts will be similar for example JS, OOP, functional programming, CSS, form elements, etc.

(Disclaimer: This article contains some affiliate links, which means if you buy something using those links, i ll be get a commission without costing you anything extra)

I don’t want to scare your bums 😃 but let’s be honest. Learning mobile development is not a piece of cake and comparatively difficult than web development mostly. No matter if you choose to learn React Native (which is one of the easiest) or any other platform/framework for mobile development. But once you have good knowledge of all the basic concepts and the technologies which I tell you in this React Native developer roadmap you will fall in love with this technology.

The similarities between these two technologies are not only in the name but they are both used as frontend technology and both are Javascript based as well. The main difference is that React is used on the Web and React Native on mobile. A lot of concepts and syntax in React is the same as in React Native. If you already have basic knowledge of React, I ll recommend this Building native mobile apps with Javacript to accelerate your React Native journey and eventually this will help you grasp major concepts of React Native. However, by now you must have heard some experts suggest learning React first before React Native and some say it is not mandatory. So this brings us to our next question.

I will highly recommend learning React first before learning React Native. Period. There might be champions who started with React Native and built an app in a couple of weeks that you will come across on the internet. But remember we all have different backgrounds and experiences in programming.

Here are the Pre Requisites before learning React Native

Let’s discuss these prereqs separately

Should be familiar with arrays and array manipulation, objects and object manipulation, map/reduce/filter, rest/spread operators, functional programming, fat arrow functions, let/const/var difference

Nodejs is a backend language. Still, I will recommend learning it because you will be using node.js code in React Native. Many concepts that will be useful in React Native are:

  1. NPM
  2. Commands like npm install, npm install — save-dev, npm start, etc
  3. Promises/Callbacks/Async Await

A couple of crud apps (only backend) and to-do apps, by connecting some databases is extremely important. Or you can do some sort of eCommerce or social media app if you want to go the extra mile.

As discussed earlier, it is not officially mandatory to learn React but I strongly recommend to learn React first and at least cover these topics:

  1. Components (Class vs Functional)
  2. Controlled components
  3. Handlers
  4. this.state, this.props and this.setState in React
  5. Life cycle methods
  6. JS Fetch/Axios for calling APIs

If you haven’t learnt React yet, I would suggest to take this wonderful book React and React Native: A complete hands-on guide to modern web and mobile development and learn React and React Native at one place.

Redux is used for global state management since the state is maintained on a component level in React, you can pass handlers with variables to child components from parents and vice versa which becomes messy and hard to manage when your app grows and becomes complex. Redux comes to the rescue. But the official documentation says don’t be too quick to use redux. Sometimes in small apps, it is better not to use redux. So use it after having learned the basics of React.

You can learn redux in react native as well and it is still entirely the same. But the reason being in learning with React is that you will find a lot of answers and community support on Redux from React category and less in RN.

If you don’t know it already then you must learn it. Flexbox is useful in designing your UI and important component of Roadmap to Learning React Native. It will require your small time to grasp and you will have huge benefits on styling your components. I will suggest you FlexboxFroggy, this website having 24 small exercises and you will be all done.

Here, technically my Roadmap to learning React Native completes. But I will suggest some more tools for your arsenal. These are not mandatory to know but you will be able to write more efficiently if you know them as well

Chances are you already know them or you learn them while learning your React course. These are as follows:

  • redux-thunk
  • redux-saga
  • LESS, SASS
  • React hooks
  • Typescript
  • Proptypes
  • Any database to connect your app, preferably Firebase (it is a good cloud solution by Google for authentication, databases, storage and more. But if you are short of time or like any other database then you can skip)

Done with the prerequisites, Now What

Now that you have completed the prerequisites you can start learning React Native finally. But let's wait, when you will be setting up an environment for React Native, you will see two options to set up RN environment

So, again two options to choose. Which one to choose. Short answer: Choose both. One by one. And choose the Expo first. It is built on the top of the react-native CLI project itself. And provide many built-in APIs and tools which will take your good time to set up in the react-native CLI project. And takes care of native code itself.

Once you setup the environment, go ahead and test out your React and all the knowledge you already learned by implementing the following:

  1. Use simple components like Image, Text, TouchableOpacity (Button), Alert, Toast, etc
  2. Debug using console.log
  3. Use Flatlist to display static data
  4. Use Life cycle methods
  5. Use API for dynamic data
  6. Add react-navigation
  7. Add redux
  8. Familiarize yourself with debugging tools
  9. Add redux persist
  10. Redux persist with storge
  11. and so on

But why the hell we have react-native CLI if Expo is that much useful.

Many native APIs are not yet supported in Expo like Bluetooth plus more. Read about further Expo limitations here. To overcome that, you will have to switch to our second method.

As we discussed that Expo CLI is limited which brings us to use react-native CLI to create apps. It gives us more power. We have different projects for iOS and Android. So that, we can integrate 3rd party SDKs or write a bridge to communicate between native and Javascript. For many medium to large projects, you will switch from expo or start from here only.

  1. Run your app on a simulator/emulator first, and then on your device as well
  2. Run your code on both platforms and run often, when you integrate a new feature or install and link a new library. Even RN works for both but there might be some tweaks that you may need to do
  3. If you are stuck on an error or unexpected behavior of the app, you must search in the open issues of the library you just installed or linked, or search on Google if others are facing the issue as well. Since RN is growing you will see some unexpected errors and warnings.

Conclusion

That’s all. Hope I have covered all the important steps on what luggage you should pack before starting your React Native journey and make it a smooth one.

Happy Coding.

Here are some other articles from me that you may like as well

Share & Manage Reusable React Native Components with Bit

Use Bit (Github) to share, document, and manage reusable components from different projects. It’s a great way to increase code reuse, speed up development, and build apps that scale.

Example: exploring shared React components on Bit.dev
Share:

Thứ Sáu, 19 tháng 3, 2021

HƯỚNG DẪN SETUP YII2 FRAMEWORK

 by Nguyễn Tài Anh

Các bước cài đặt Yii2 Framework

Đầu tiên các bạn tự cài đặt ComposerXampp giúp mình

-         Tạo project trong thư mục htdocs của xampp:

composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application

-         Chạy lệnh cmd php init tại project

-         Sửa thông tin DB: NameProject/common/config/main-local.php

-         Chạy php yii migrate tại project để cài database   

Chạy chương trình:

http://localhost/nameproject/frontend/web/index.php

Lấy đường dẫn để xác thực mail

            Tạo tài khoản


        Yêu cầu lấy mã

          - B1: Vào project/frontend/runtime/mail/[file lấy link xác thực .eml]

          -B2: tìm đến đường dẫn như hình


          - B3: Đưa về trên cùng 1 dòng

          - B4: Tìm và xoá “3D” trong đường dẫn trên


http://localhost/yii-application/frontend/web/index.php?r=3Dsite%2Fverify-email&t=oken=3DHAIZtsuAjyKx9Jp3J8LQDEAAsayOvSWd_1616136649

B5: Tại t=oken xoá dấu =

            - B6: Copy đường dẫn và part lên thanh search

DONE



Nguồn: https://www.yiiframework.com/wiki/848/installation-guide-yii-2-advanced-template-with-rbac-system

Link video hướng dẫn: https://www.youtube.com/watch?v=576lhZZeVcM

Link trang chủ advanced: https://www.yiiframework.com/extension/yiisoft/yii2-app-advanced/doc/guide/2.0/en/start-installation

Sử dụng Docker:

https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-installation.md#installing-using-docker

Video Yii2 Tutorial: https://www.youtube.com/watch?v=whuIf33v2Ug

Tutorial: https://www.tutorialspoint.com/yii/index.htm

Github: https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/start-installation.md

 

 

 

 

Share:

Thứ Tư, 3 tháng 3, 2021

DĂM BA CÁCH HACK SẬP 1 WEBSITE NÀO ĐÓ – PHẦN 2

  By Phạm Huy Hoàng- Toidicodedao

Ở phần trước, mình đã giới thiệu với mọi người về qui trình hack 1 website, 1 số cách hack đơn giản.

Ở phần này, mình sẽ chia sẻ thêm 1 số cách hack khác, cũng như những điều bạn cần lưu ý sau khi hack xong nhé! Cuối bài mình cũng sẽ share một số tài liệu cho những bạn muốn nhập môn, tìm hiểu về bảo mật và hacking luôn nhé.

Cách 3 – Tấn công trực tiếp vào server

Nếu coi trang web là 1 gian hàng, thì server là toà nhà chứa gian hàng đó. Không phá sập gian hàng được thì chỉ việc … nổ bom sập toà nhà là gian hàng cũng đi tong theo!

Web cũng vậy, thông thường web sẽ được chạy trên 1 hoặc nhiều server (những web nho nhỏ thì 1 server chứa nhiều web). Đôi khi, các server này không chỉ chứa web mà còn chứa database, mail server để gửi mail, FTP server để upload/download file….

Nếu các phần mềm này không được update, hacker có thể lợi dụng các lỗ hổng đã phát hiện (CVE) để DOS hoặc remote execution để chạy code trên server, sau đó lợi dụng privilege escalation để chiếm quyền root, muốn làm gì thì làm.

Một cách để chống là dùng cloud service để host, không có server không lo bị hack

Nếu muốn thử, các bạn có thể lên HackTheBox để tập hack các server dạng này nhé!

Các tool hay dùng và kiến thức cần biết:

  • Metasploit – Chứa rất nhiều payload và code để tấn công một phiên bản phần mềm nào đó
  • Searchsploit – Tìm hiểu các
  • nmap – Để scan các phần mềm chạy trên port nào cửa server, version các phần mềm đó

Cách 4 – Mò mật khẩu (brute-force)

Cách này nghe có vẻ rất đơn giản nhưng nhiều khi lại … vô cùng hiệu quả. Cách này sẽ mò username và mật khẩu để đăng nhập cho tới khi đúng thì thôi!

Để tiết kiệm thời gian, các chương trình sẽ không mò mật khẩu theo kiểu: a, aa, abc, … mà sẽ sử dụng wordlist. Đây là danh sách những mật khẩu phổ biến, hay dùng (123456, password…), mật khẩu đã bị lộ v…v. Xác suất thành công khá cao, số lần cần thử cũng ít hơn.

Mật khẩu thường được lưu trong các wordlist để dễ mò

Để chống bị mò mật khẩu, các bạn nên áp dụng những biện pháp sau:

  • Đặt mật khẩu dài, ít phổ biến
  • Nên sử dụng 20Factor Authentication, có mật khẩu cũng không login được
  • Khi thấy có IP lạ/người dùng lạ cố tình mò mật khẩu, nên block IP/block account hoặc báo cáo cho admin

Các tool hay dùng:

  • Hydra – Đây là 1 tool bá đạo có thể mò mật khẩu đủ thứ từ FTP, SSH cho tới LDAP, MySQL hoặc form
  • BurpSuite cũng hỗ trợ lấy param từ wordlist
  • John The Ripper – Crack mật khẩu file nén, mật khẩu hệ điều hành, database, wifi
  • Kali Linux có 1 danh sách wordlist đủ thể loại, từ mật khẩu tới file tới tên folder

Cách 5 – DDOS sập con bà nó

Nếu sau khi làm đủ mọi cách mà vẫn không tìm ra lỗ hổng của 1 trang web, chúng ta có thể … DDOS cho nó sập. DDOS là viết tắt của Distributed Denial-of-Service. Cách này không tính là “hack”, mà xem như là “phá” để website không hoạt động được.

Ví dụ bạn muốn phá quán trà sữa gần nhà, chỉ cần thuê 40 thằng giang hồ đứng xếp hàng chọn món nhưng không mua. Khách muốn mua trà sữa không mua được, sẽ bỏ đi.

DDos Web cũng vậy,  ta gửi rất nhiều yêu cầu từ nhiều bot trong 1 botnet, làm quá tải trang web mình muốn phá. Lúc này, người dùng không thể truy cập trang web được nữa, nên sẽ bỏ đi.

Những script/tool DDOS thì có khá nhiều trên mạng (Github cũng có), có điều chúng thường không quá hiệu quả:

  • Server bây giờ thường rất khoẻ, chạy script trên 1 máy cùng lắm chỉ tạo được vài chục user, không ăn thua
  • Phía server có thể dựa theo IP, header để chặn những request DDOS

=> Do vậy, đa phần những cuộc DDOS thường được thực hiện bởi hacker, sở hữu botnet (một hệ thống từ vài trăm tới vài nghìn máy dính mã độc của hacker). Botnet này có thể gửi vài triệu request, làm server lăn ra tèo khônng kịp ngáp.

Cloudflare cũng từng bị DDOS từ hơn 300k IP 

Hiện tại trên darkweb có bán 1 số dịch vụ DDOS, hoặc nhiều trang cũng bán dịch vụ DDOS (trá hình là performance testing), các bạn quan tâm thì tự tìm hiểu nhé!

Hack xong thì làm gì?

À quên, lỡ các bạn làm theo các bước mình chỉ dẫn mà lỡ hack … thành công một trang web nào đó thì sao? Đây là một số điều bạn nên lưu ý:

  • Sau khi hack xong, nhớ xoá hết mọi dấu vết của mình nếu có thể (access log, command log).
  • Nếu có ý định đột nhập lần sau, hay để sẵn 1 backdoor nào đấy (shell, tạo account hoặc ssh key)
  • Hãy báo cáo lỗ hổng bảo mật cho admin trang web để họ sửa. Bạn sẽ được vinh danh hoặc đôi khi có thêm tiền thưởng (bounty)
  • Đừng công bố (disclose) lỗ hổng cho tới khi nó đã được fix, đề phòng hacker/trẻ trâu lợi dụng
  • Nếu không báo cáo cho admin mà lợi dụng lỗ hổng, hoặc bán trên các forum lậu, darkweb v…v thì bạn sẽ có thể được nhiều tiền hơn, nhưng khả năng dính vào tình tiền tù tội cũng cao hơn nhiều!
Bug Bounty từ vài trăm đô với chục nghìn đô (với công ty lớn)

Tạm kết

Đấy, túm cái váy lại là tuy 2 phần này khá dài, nhưng nó chỉ là 1 cái nhìn cực kì khái quát về các biện pháp hacking/security thôi!

Trong bài viết mình có giới thiệu 1 số tool, nhưng các bạn đừng nên quá lệ thuộc vào tool, mà tìm hiểu tool hoạt động ra sao, khi nào thì dùng tool nào, không có tool thì hack kiểu gì. Đừng làm script kiddy, chỉ biết chạy tool đại chứ không hiểu chạy tool để làm gì nha!

Nếu muốn tìm hiểu chuyên sau hơn, các bạn có thể kéo xuống và xem những kênh/tài liệu hay về bảo mật nhé!

 

Bonus 1: Nếu ngại đọc, các bạn có thể xem vlog của mình. Clip ngắn gọn hơn, không đi sâu vào như blog.

 

Bonus 2: Một số website/ tài liệu hay về hacking và penetration testing

Share:

a1c4b3.blogspot.com

Tìm kiếm Blog này

lifecycle hook angular

Labels