...

what we think

Blog

Keep up with our latest news, tech advancements, and articles contributed by our staff. You will discover our official announcements, exciting events, technological insight, and our staff voice.
TECH

December 3, 2023

How to use 2D Graphics in .NET MAUI app

.NET Multi-platform App UI (.NET MAUI) is a framework for building modern, multi-platform, natively compiled iOS, Android, macOS, and Windows apps using C# and XAML in a single codebase [3]. This blog show how to use draw a graphical object in .NET MAUI app.

View More
TECH

December 3, 2023

5 things awesome Google Sheets you can do at work

I usually use Google Sheets at work. It has a clean interface. it’s easy to collaborate with other people in projects. In few case, it's save me more time than other ticket management software. I'm going to show you some tips that will help you save time and do some useful things, Let’s get started!

View More
TECH

December 1, 2023

What does Critical Thinking mean to Developers?

Critical thinking is a valuable skill for developers, as it helps them approach programming challenges, design decisions, and problem-solving tasks in a thoughtful and systematic way.

View More
ARTICLE

November 30, 2023

Immortal Tree

Please be started my story by a photo which I took when I had a chance to visit Tokyo last September.
It is a manhole cover photo. Why? The reason is the art in public construction can tell you some stories about the culture of the country you visit.
It is same with this photo. In the center of the manhole cover is the symbol of a sakura flower and the leaves of Ginkgo tree. When talking about Japan, surely no one don't know about the sakura flower. So, what is about Ginkgo tree





Ginkgo tree appeared more than 290 million years ago (1*). This tree family is the oldest tree family in the world. It existed before the appearing of dinosaurs. This plant doesn't have any natural diseases or pests. Therefore, the Ginkgo tree has eternal vitality.

In the summer of 1945, the historic bomb explosion in Hiroshima can kill every thing lives on the ground but the Ginkgo tree. You can visit Myojoin Temple ( Higashi Ward, Hiroshima) and see the only living witness of the atomic bomb. So from that day, Ginkgo tree is considered as the hope bearer tree.

On June 1st, 1989, Tokyo city adopted the symbol which is made of tree arcs resembling of a Ginkgo leaf to form up the T letter in "Tokyo" word(2*). Since then Ginkgo tree has become the Tokyo tree. You can commonly find out the Ginkgo tree with fan-shaped leaves along Tokyo's streets or avenues. The tree symbolizes for strong vitality, steadfastness and everlasting beauty.

Every year, at the end of Autumn, the entire Ginkgo tree forest will turn its leaves from green to yellow, flying with a small wind like the swan feet touch on the sky. Icho Namiki is the best place to see that romantic scenes.



Moreover, Ginkgo tree also brings the benefits to people in term of health. Dried Ginkgo leaves help promote brain health, support treatments of asthma and bronchitis.
Japanese use Ginkgo seeds to prepare many delicious of dishes such as takikomi rice, rice soup, grilled skewered meet, chawanmushi, ...


Reference Links:

  1. Ginkgo biloba
  2. Tokyo's symbol

The post uses the free photo from Freepik site

View More
TECH

November 30, 2023

Flux Architecture with QML

 
In 2014, during the Hacker Way conference, Facebook introduced Flux architecture as an alternative to MVC.
Flux architecture is a software design pattern that helps manage the flow of data in complex applications.
It provides s unidirectional data flow, which makes it easier to understand, maintain, and debug applications.
 

1. What is Flux architecture

Flux is an architectural pattern proposed by Facebook.
These are four parts: Actions, Dispatcher , Stores, Views

 

Actions:  Contains all information necessary to do some action
 
Dispatcher: Is a Single Object that broadcast (actions) to all stores
 
Stores:  Manages the state ( data  ), the store is an event emitter
 
Views: Is the user interface component, Views listen for store changes
 

2. Flux architecture with QML

 

 

Views:  Are QML files
 
Actions: Is a Data type that include event name and data
 
Dispatcher: Is Singleton design pattern that is control center forward actions to all stores
 
Stores:  Use C++ models with QML
 
The following application creates a Data Object class with Q_PROPERTY values that will be accessible as named roles when a QList<DataObject*> is exposed to QML
 
 
3. Why do we should use Flux architecture
 
Today, there are two popular architectures : MV*( Model-View-Control, Model-View-Presenter, …) and  flux
Comparison table between  MVC and Flux architecture
 
 
Merit & Demerit
 
 
4. Demo source

You can refer the below Demo source code.

DemoFluxSrc

 

[Reference Source]

  • https://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html
  • https://www.infoq.com/news/2014/05/facebook-mvc-flux/
  • https://www.voidcanvas.com/flux-vs-mvc/
View More
TECH

November 29, 2023

Let's learn VBA together

   VBA stands for Visual Basic Application, which is a basic programming application in Microsoft Office. For someone who doesn't know about programming or IT, we will be a little confused when hearing about the concept of of VBA, right? However, it's actually more accessible than you think.

View More
TECH

November 29, 2023

Laravel - Some tips to optimize Laravel's performance

Laravel has been a famous framework since 2011. This framework can help us develop a project faster than it did with a lower effort. But one of the most important things when we use a framework is performance.

Luckily, Laravel has supported many helpful features to optimize performance (Redis, Memcache, DB support, etc).

There are many factors that can negatively affect your web application, including poor code quality, inefficient server configurations, and insufficient resources.

However, we can use some tips to improve your website.

1. Update to the latest version of PHP and Laravel

It seems quite obvious but it is the simple way to improve your web application. This may be a challenge with a large legacy application while updating the version. But using the latest version can help us with numerous benefits: new features, bug fixes, and security.

2. Using the Artisan Command

One of the best features in Laravel is called Artisan. Artisan is a command-line tool. It will improve your web performance if you use it in the right way. The easy way is that you can cache the route as well as config with a command line.

php artisan config: cache

php artisan route: cache

Route Caching: This is a critical tool, especially for applications that have a large number of routes. With caching, Laravel only refers to the file where the cached routes are stored (bootstrap/cache/routes.php) instead of rendering all the routes in your website (This will cause slow performance).

Config Caching: Similar to route caching, it will find all data of the config file and variables of .env file then store it in bootstrap/cache/config.php

Remember that you need to run the command above if you have changed any in the config file or route file. To clear the cache, you can run these commands:

php artisan config: clear

php artisan route: clear

3. Remove unused service

The key goal of Laravel is to bring an easy development process to the developers.

When launching Laravel, it will auto-load many service providers listed within the config/app.php file to help you get started with your project.

In addition, many developers don’t want to follow the default framework settings. So it’s necessary to delete unused services to improve your project performance.

4. Eager Loading

All of the queries in Laravel are lazy queries when you execute. It only fetches the required data. Sometimes, this will increase the number of queries and cause low performance for your website. You will run up to N+1 queries to find your response.

To resolve the N+1 queries problem, Laravel provides us with a feature that can use eager loading to load the data to help us improve performance.

Let's compare the source code of two loading modes:

Lazy Loading: You will need to execute multiple queries to find the response you need.

$books = Book::all(); // Get all books

foreach($books as $book) {

echo $book->author->name // Executing query to find author link with book

}

 

Eager Loading: You only need to execute once.

$books = Book::with('author')->get(); // Get all books link with author

foreach ($books as $book) {

echo $book->author->name // Not execute query again to find

}

Conclusion

Laravel is a fast-growing PHP framework, that has many useful features to support users to improve the performance of their websites.

Hopefully, some tips that I introduced above can help you somewhat in optimizing your website performance.

 

Reference:

  1. Ultimate Laravel Performance Optimization Guide (cloudways.com)
  2. 17 Methods to Optimize Laravel Performance (kinsta.com)
View More
TECH

November 29, 2023

Introduction: Extensions for Laravel framework

If you’re coding Laravel with VS Code, extensions are the most important factor that we need to install before starting the project.

Following are some of the best VS Code extensions for Laravel developers. These extensions will help you boost your productivity and ease your development.

1. Laravel Blade Snippet

This extension adds the syntax highlight which supports your VS Code.

Some key features of the extension:

  • Blade syntax highlight.
  • Blade snippets.
  • Blade formatting.
  • Emmet works in blade template.

To change the setting of Laravel Blade Snippet, go to Preferences and select Settings, then config in JSON file like the following 

"emmet.triggerExpansionOnTab": true,

"blade.format.enable": true,

There are some syntaxes that Laravel Blade Snippet supports:

Trigger Snippet
b:php

@php

// code

@endphp

b:section

@section

// code

@endsection

b:include @include(...)
b:if

@if (condition)

// code

@endif

b:if-else

@if (condition)

// code

@else

// code

@endif

b:for

@for (...)

// code

@endfor

b:foreach

@foreach (...)

// code

@endforeach

2. Laravel Extra Intellisense

This extension supports autocomplete these features:

  • Route names and route parameters.
  • Views and variables.
  • Configs.
  • Translations and translation parameters.
  • Laravel mix function.
  • Validations rules.
  • View sections and stacks.
  • Env.
  • Route Middlewares.
  • Asset.
  • Blade directive.

It helps us find the name of that config easily so that we don’t need to search in the directory tree. We only enter the key that we remember and this extension will remind us of another.

3. Laravel goto view

This is a simple extension. It can help you quickly jump to another file view, no matter where you are.

If you want to jump to another, we use the keystrokes “Ctrl + Click” or “Alt + Click”. Besides that, in case you want to customize more extensions, you can go to Preferences > Settings > Extensions/Laravel goto view configuration, and then add the extension that you want to customize. Here is the configuration JSON:

"laravel_goto_view.extensions": [
  ".blade.php",
  ".vue",
]

4. Laravel goto Controller

Finding a controller can be difficult when your application grows with a number of different controllers. Then, using this extension will help you reduce the time spent searching, you can quickly jump to the controller from the route config file without having to find the exact controller name. 

The usage is the same as keystrokes in the Laravel goto view to jump to the respective controller file from the routes file.

Conclusion

These extensions will help you to boost productivity. It helps us save a lot of time and make the development project easier. Thus, using extensions in a project is always useful.

If you are excited about all the mentioned extensions above, you can take a look at the Laravel Extension Pack for Visual Studio Code. If you are interested in more extensions, I suggest you try these extensions: Laravel Blade Spacer, Laravel Artisan, Laravel Model Snippets, PHP Intelephense, PHP Constructor, etc.

 

Reference:

10+ Best VS Code Laravel Extensions For Developers - ThemeSelection

Image source:

Laravel Extra Intellisense - Visual Studio Marketplace

 

View More
ARTICLE

November 27, 2023

15 Tips to Eliminate Anxiety and Find Inner Peace

Anxiety is a common and natural response to stress, but when it becomes overwhelming or chronic, it can have a detrimental impact on our overall well-being. Fortunately, there are various strategies and techniques that can help reduce anxiety and bring a sense of inner peace. In this blog, we will explore 15 tips to eliminate anxiety and regain control over your mental and emotional state.

Practice deep breathing

Deep breathing is a simple yet powerful technique to calm your nervous system. Slowly inhale through your nose, hold for a few seconds, and then slowly exhale through your mouth. This technique helps in the control of your heart rate and the relief of anxiety feelings.

Mindfulness meditation

Mindfulness meditation requires focusing on the present moment. By doing this, you can reduce rumination and negative thinking patterns that often contribute to anxiety.

Exercise regularly

Engaging in physical activity triggers the release of endorphins, natural substances that elevate mood. Regular exercise can help reduce anxiety and stress, so find an activity you enjoy and make it a part of your routine.

Prioritize sleep

A lack of sleep can exacerbate anxiety. Ensure you get 7-9 hours of quality sleep each night to support your emotional well-being.

Limit caffeine and sugar

Both caffeine and excessive sugar intake can contribute to anxiety and mood swings. Pay attention to what you consume and choose healthier alternatives.

Balanced diet

A well-balanced diet rich in fruits, vegetables, lean proteins, and whole grains can positively affect your mood and reduce anxiety.

Establish a routine

Creating a daily routine provides structure and predictability, which can help reduce anxiety. Know what to expect in your day, and you'll feel more in control.

Seek professional help

If your anxiety is severe or persistent, consider speaking with a mental health professional who can provide therapy, medication, or other appropriate treatments.

Express your feelings

Bottling up your emotions can intensify anxiety. Talk to a friend or therapist about what's bothering you, or try journaling to release pent-up feelings.

Limit exposure to news

Constant exposure to distressing news can increase anxiety. Stay informed, but set boundaries on how much news you consume each day.

Practice gratitude

Every day, practice thinking about the things you feel grateful for. Concentrating on the good aspects of your life can help you change your perspective and lessen anxiety.

Progressive muscle relaxation

Relax all muscle groups in your body. This helps release your physical tension and calm your mind.

Visualization

Visualization is a powerful tool to reduce anxiety. Imagine yourself in a calm, peaceful place, and try to immerse yourself in that mental space.

Limit perfectionism

Striving for perfection can create unnecessary stress and anxiety. Accept your imperfections and remind yourself that no one is perfect.

Stay hydrated

Dehydration can affect your mood and increase anxiety. Do not forget to drink enough water during the day.

Anxiety is a common challenge that many people face, but with the right strategies and techniques, you can manage and even eliminate it. The 15 tips mentioned in this blog are effective ways to reduce anxiety and find inner peace. Remember that everyone's journey is unique, and it may take time to discover which strategies work best for you. Stay patient and committed to your well-being, and don't hesitate to seek professional help if needed. With time and effort, you can achieve a calmer and more fulfilling life.

View More
TECH

November 24, 2023

Why Testers and Developers Have Different Mindsets

Testers and developers play crucial roles in software development, but their mindsets differ significantly. Developers focus on creating and building the software, while testers focus on detecting issues. This difference in focus leads to distinct mindsets that influence their approach to work.

Developer Mindset:

  • Creativity and Problem-Solving: Developers are creative problem-solvers who enjoy tackling complex challenges. They approach programming with an analytical mindset, devising smart solutions to technical problems. They enjoy the challenge of transforming ideas into working software.

  • Attention to Detail and Precision: Developers meticulously craft code, ensuring accuracy and consistency. They strive for high-quality code that is efficient, reliable, and maintainable. Attention to detail is essential to prevent bugs and maintain software integrity.

  • Focus on Functionality and Features: Developers prioritize creating software that meets the specified requirements and delivers the desired features. They typically work closely with the requirements provided by business analysts or product owners. 

Tester Mindset:

  • Critical Thinking and Suspicion: Testers adopt a critical mindset, questioning assumptions and challenging the status quo. They approach testing with a healthy dose of skepticism, seeking out potential defects and inconsistencies. This mindset is essential to uncover hidden issues and ensure software quality.

  • Attention to Edge Cases and Unexpected Behavior: Testers excel at identifying edge cases and challenging the boundaries of the software. They meticulously explore various scenarios and inputs, anticipating potential issues that might arise under unusual conditions. This approach ensures that the software can handle real-world usage scenarios effectively.

  • Emphasis on Usability and User Experience: Testers not only evaluate the functional aspects but also consider the software from the user's perspective, ensuring that it is easy to use, intuitive, and user-friendly. They focus on identifying usability issues, such as confusing interfaces or lack of clarity, to enhance the overall user experience.

 

In summary, the differing mindsets of testers and developers reflect their distinct roles in the software development process. Developers are driven by creativity, problem-solving, and attention to detail, while testers prioritize critical thinking, edge case analysis, and usability considerations. Combining the strengths of both roles helps create a more comprehensive and reliable end product.

 

Image source

https://www.bing.com/images/create/the-difference-in-perspective-of-e2809ctesterse2809d-and-e2809cde/1-65606aac4f7145e6aa9867dbe9a439fe?id=MzU0R9ZOuNXAolSI9PuZZA%3d%3d&view=detailv2&idpp=genimg&FORM=GCRIDP

View More
1 2 3 11
Let's talk about your project! CONTACT US


At ISB Vietnam, we believe in making a positive difference to our clients through our software development outsourcing services.

As a prestigious offshore software development company in Vietnam, we've been providing top-notch solutions to numerous clients for over two decades since 2003.

Add the attachment
*Up to 10MB
...