SEARCH KEYWORD -- ERROR AND OMISSION
Implementing DESede/ECB/NoPadding cipher algorithm in GoLang
By default, GoLang doesn't provide the ECB mode cipher for DESede though there is CBC mode provided. In cases we need to encrypt/decrypt data with ECB mode, we need to implement those by ourselves. This mode is frequently used when encrypting/decrypting PIN block which is small block data less than 16 bytes. In this post, we will introduce how to implement the DESede/ECB/NoPadding algorithm in GoLang by using the existing cipher support. Here we will not cover how DESede works in detail, instead...
The evolving history of asynchronous operation in JavaScript
JavaScript is single threaded, it means there would be only one task running at any point of time. But this would slow down the overall program execution if there is long running task, hence asynchronous task execution is desired in complex cases. To achieve asynchronous task execution, there are a few options introduced in JavaScript. setTimeout/setInterval Event Promise Async/Await setTimeout/setInterval is one of the first mechanisms introduced in JavaScript to simulate asynchronous operati...
JAVASCRIPT,ASYNC,PROMISE,AWAIT 2019-11-09 08:21:56
A plugin to update last_error in Delayed Job
delayed_job is a process based asynchronous task processing gem which can be ran at background. It will fork the specified number of processes to execute the tasks asynchronously. The task status is usually stored in the database so that it can be easily integrated into a Rails application where asynchronous job execution is desired. Normally when a job fails to execute or error occurs, it would save the error into the database with the column last_error. Ideally all these will be handled b...
RUBY,RUBY ON RAILS,DELAYED JOB,LAST_ERROR 2017-11-18 13:05:49
Error handling style in C
Following are three error handling styles in C.Which one you like the most? Or you don't like any one?1. /* Problem : Not enough. Easy to be wrong */int foo(int bar){ int return_value = 0; int doing_okay = 1; doing_okay = do_something( bar ); if (doing_okay) { ...
C,Error handling style,Goto,Nested if 2012-04-24 06:51:00
Why init() is not recommended in Go
golangci lint Currently, the unified CI's .golangci.yml includes the gochecknoinits checker: # golangci-lint v1.46.2 # https://golangci-lint.run/usage/linters linters: disable-all: true enable: ... - gochecknoinits # Checks that no init functions are present in Go code. ref: https://github.com/leighmcculloch/gochecknoinits ... If Go code uses the init() function, the following error will occur: # golangci-lint run foo/foo.go:3:1: don't use `init` function (gochecknoinits) func i...
A strange behavior of printing struct with nested struct in GoLang
Normally when trying to print a struct , we would use %v to show all data of the struct. It will print the default format for each field in the struct. %v the value in a default format when printing structs, the plus flag (%+v) adds field names But recently we observed a strange behavior when printing a struct with nested struct which has a String() string implemented, the %v format prints an 'unexpected' output per our understanding. Let's see the example snippet first. pa...
PROGRAMMING,GOLANG 2018-10-29 09:59:49
Fix issue "cannot load such file -- bcrypt_ext (LoadError)"
bcrypt() is a sophisticated and secure hash algorithm designed by The OpenBSD project for hashing passwords. The bcrypt Ruby gem provides a simple wrapper for safely handling passwords. However, sometimes the rails application would fail to start after installing the bcrypt gem on Windows. The error would look similar to below. The issue is that it fails to load the bcrypt_ext which is the native built extension, the reason may be the library is wrongly built. To fix this issue, below steps can...
RUBY,SOLUTION,RUBY ON RAILS,BCRYPT,LOAD ERROR 2017-03-05 00:21:10
Maintain multiple versions of Go in one single environment
In a development environment, there might be multiple projects going on at the same time and they may require different development environments with different versions of build tool. In many programming languages, it is possible to have multiple versions of different build tool or development tool on a single environment. For example, there can be multiple JDKs, multiple versions of Ruby using RVM. For GoLang, there is a similar tool called GVM which can also be used to maintain multiple versio...
GOLANG,GVM,GVM PKGSET,RVM 2019-11-10 00:43:47
How to reset root password in MySQL 8
The user password in MySQL is stored in the user table, the password reset is actually to change the value of record in this table. To change the password in case the password is forgotten, the idea is to bypass the authentication of MySQL and get into the system and update the record password value with SQL command. In MySQL 5, one can start MySQL service with --skip-grant-tables option, this option will tell the service to skip loading the grant tables when starting, hence the root user can lo...
Install PHP 8 in WampServer
With the release of PHP 8.4, there are some new features added in, it reminds me that I may need to upgrade my development environment PHP version as well. It has php 5.x and php 7.x installed already, now I need to add php 8.x as well. This post will show the steps to achieve this. Step 1 Install PHP 8.x The first step is that we need to download the new PHP version. Here we chose PHP 8.1.31. Once the zip file is downloaded, unzip it and copy the folder to c:/wamp64/bin/php and rename the folde...
WAMP,GUIDE,PHP VERSION,PHP 8 2024-11-24 02:43:22
RECENT
- How Artificial Intelligence Is Helping Fight Environmental Challenges
- How to Deal with Accusations of Negligence as a Business
- Google's Business Operations in China Amid Antitrust Scrutiny
- Deploying DeepSeek-R1 Locally with a Custom RAG Knowledge Data Base
- Balancing Convenience and Security in the Digital World
- My AI Learning Journey: Exploring the Future of Technology
- Power Grid Simulation System 02 : FDI Power Outage Attack Case Study
- Be Careful When Using Cursor to Help Build Application
- Calculating Token Count for Claude API Using Go: A Step-by-Step Guide
- Understanding Cursor and WindSurf's Code Indexing Logic
- more>>