gocloud - writing data to a bucket: 403
2022-12-23
Problem
We are writing some integration test using Go CDK. After writing some data to a bucket:
1 writer, err := buckOut.NewWriter(ctx, fileDst, nil) 2 if err != nil { 3 logger.Errorf("failed to write to fileDst: %v", err) 4 return err 5 } 6 defer writer.Close()
we got an error when reading:
1(code=NotFound): storage: object doesn't exist
By reading the documentation, I pay attention to this:
Closing the writer commits the write to the provider, flushing any buffers, and releases any resources used while writing, so you must always check the error of Close.
Terraform failed to acquire state lock: 403: Access denied., forbidden
2022-11-17
Problem
We stored Terraform state in gcs. For some reasons, we got this error randomly when running on BitBucket pipelines:
1╷ 2│ Error: Error acquiring the state lock 3│ 4│ Error message: 2 errors occurred: 5│ * writing 6│ "gs://bucket/path/to/default.tflock" 7│ failed: googleapi: Error 403: Access denied., forbidden 8│ * storage: object doesn't exist 9│ 10│ 11│ 12│ Terraform acquires a state lock to protect the state from being written 13│ by multiple users at the same time. Please resolve the issue above and try 14│ again. For most commands, you can disable locking with the "-lock=false" 15│ flag, but this is not recommended. 16╵
The King of Vietnamese language game show
2022-11-04
My family likes to watch “The King of Vietnamese language” game show together. I want to encourage our son to love Vietnamese. At the end of the game, the player has to find 7 complex words from the letters, for e.g,
đ / ă / n / g / c / a / y
One evening a few weeks ago, while we were watching the final round, my wife suddenly came up with an idea: this game could be programmed.
SICP Exercise 2.43: Eight queens: interchange the order of the nested mappings
2021-11-02
Exercise 2.43: Louis Reasoner is having a terrible time doing exercise 2.42. His queens procedure seems to work, but it runs extremely slowly. (Louis never does manage to wait long enough for it to solve even the 6× 6 case.) When Louis asks Eva Lu Ator for help, she points out that he has interchanged the order of the nested mappings in the flatmap, writing it as
SICP Exercise 2.42: Eight queens puzzle
2021-10-29
Exercise 2.42: The “eight-queens puzzle” asks how to place eight queens on a chessboard so that no queen is in check from any other (i.e., no two queens are in the same row, column, or diagonal).
One way to solve the puzzle is to work across the board, placing a queen in each column. Once we have placed
k - 1
queens, we must place thek
th queen in a position where it does not check any of the queens already on the board.
SICP Exercise 2.41: Triple sum
2021-10-18
Exercise 2.41: Write a procedure to find all ordered triples of distinct positive integers
i
,j
, andk
less than or equal to a given integern
that sum to a given integers
.
unique-triples
can be written easily base on unique-pairs
in 2.40:
1(define (unique-triples n) 2 (flatmap 3 (lambda (i) 4 (flatmap 5 (lambda (j) 6 (map (lambda (k) (list i j k)) 7 (enumerate-interval 1 (- j 1)))) 8 (enumerate-interval 1 (- i 1)))) 9 (enumerate-interval 1 n)))
SICP Exercise 2.35: Counting leaves of a tree
2021-10-14
Exercise 2.35: Redefine count-leaves from section 2.2.2 as an accumulation:
1(define (count-leaves t) 2 (accumulate <??> <??> (map <??> <??>)))
The count-leaves
procedure from section 2.2.2:
1(define (count-leaves x) 2 (cond ((null? x) 0) 3 ((not (pair? x)) 1) 4 (else (+ (count-leaves (car x)) 5 (count-leaves (cdr x))))))
SICP Exercise 2.27: Reversing nested lists
2021-10-12
Exercise 2.27: Modify your reverse procedure of exercise 2.18 to produce a deep-reverse procedure that takes a list as argument and returns as its value the list with its elements reversed and with all sublists deep-reversed as well. For example,
1(define x (list (list 1 2) (list 3 4))) 2 3x 4((1 2) (3 4)) 5 6(reverse x) 7((3 4) (1 2)) 8 9(deep-reverse x) 10((4 3) (2 1))
First, look at my reverse
procedure:
1#lang racket/base 2(require racket/trace) 3 4(define (reverse items) 5 (iter items null)) 6 7(define (iter remaining result) 8 (trace iter) 9 (if (null? remaining) 10 result 11 (iter (cdr remaining) (cons (car remaining) result)))) 12 13(trace reverse) 14(reverse (list (list 1 2) (list 3 4)))
SICP Exercise 1.25: A simpler expmod?
2021-09-30
Exercise 1.25: Alyssa P. Hacker complains that we went to a lot of extra work in writing
expmod
. After all, she says, since we already know how to compute exponentials, we could have simply written:1(define (expmod base exp m) 2 (remainder (fast-expt base exp) m))Is she correct? Would this procedure serve as well for our fast prime tester? Explain.
First, look at the original algorithm:
1 (define (expmod base exp m) 2 (cond ((= exp 0) 1) 3 ((even? exp) 4 (remainder 5 (square (expmod base (/ exp 2) m)) 6 m)) 7 (else 8 (remainder 9 (* base (expmod base (- exp 1) m)) 10 m))))
SICP Exercise 1.16: Iterative Exponentiation
2021-09-29
I am reading SICP.
Section 1.2.4 talks about the problem of computing the exponential of a given number.
The authors start with a recursive procedure:
1#lang sicp 2 3(define (expt b n) 4 (if (= n 0) 5 1 6 (* b (expt b (- n 1)))))
This requires O(n) steps and O(n) space.
then an iterative procedure:
1#lang sicp 2 3(define (expt b n) 4 (expt-iter b n 1)) 5 6(define (expt-iter b counter product) 7 (if (= counter 0) 8 product 9 (expt-iter b 10 (- counter 1) 11 (* b product))))