[47°09′21″S, 126°43′50″W] Transponder still failing – switching to analog communication
[47°09′04″S, 126°43′23″W] Transponder still failing
[47°09′43″S, 126°43′16″W] Transponder still failing – switching to analog communication
[47°09′14″S, 126°43′19″W] Transponder still failing – switching to analog communication
Anyone know what this might be about?
[1134036.271114] ata1.00: exception Emask 0x0 SAct 0x4 SErr 0x880000 action 0x6 frozen
[1134036.271478] ata1: SError: { 10B8B LinkSeq }
[1134036.271829] ata1.00: failed command: WRITE FPDMA QUEUED
[1134036.272182] ata1.00: cmd 61/20:10:e0:75:6e/00:00:11:00:00/40 tag 2 ncq 16384 out
res 40/00:01:00:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout)
[1134036.272895] ata1.00: status: { DRDY }
[1134036.273245] ata1: hard resetting link
[1134037.447033] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[1134038.747174] ata1.00: configured for UDMA/133
[1134038.747179] ata1.00: device reported invalid CHS sector 0
[1134038.747185] ata1: EH complete
[47°09′01″S, 126°43′44″W] Dosimeter still failing
[47°09′51″S, 126°43′26″W] Transponder still failing – switching to analog communication
[47°09′44″S, 126°43′23″W] Transponder still failing
[47°09′18″S, 126°43′58″W] Transponder still failing – switching to analog communication
[47°09′07″S, 126°43′28″W] Dosimeter still failing
[47°09′29″S, 126°43′10″W] Dosimeter still failing
[47°09′22″S, 126°43′59″W] Transponder still failing – switching to analog communication
[47°09′42″S, 126°43′21″W] Transponder still failing – switching to analog communication
$name$ and then dispatch the hashing or checking to its specific format.
Here is an example of usage:
func Example() {
pass := "my_pass"
hash := "my_pass"
pwd := passwd.New(
&unix.MD5{}, // first is preferred type.
&plainPasswd{},
)
_, err := pwd.Passwd(pass, hash)
if err != nil {
fmt.Println("fail: ", err)
}
// Check if we want to update.
if !pwd.IsPreferred(hash) {
newHash, err := pwd.Passwd(pass, "")
if err != nil {
fmt.Println("fail: ", err)
}
fmt.Println("new hash:", newHash)
}
// Output:
// new hash: $1$81ed91e1131a3a5a50d8a68e8ef85fa0
}
This shows how one would set a preferred hashing type and if the current version of ones password is not the preferred type updates it to enhance the security of the hashed password when someone logs in.
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L33-L59
$name$ and then dispatch the hashing or checking to its specific format.
Here is an example of usage:
func Example() {
pass := "my_pass"
hash := "my_pass"
pwd := passwd.New(
&unix.MD5{}, // first is preferred type.
&plainPasswd{},
)
_, err := pwd.Passwd(pass, hash)
if err != nil {
fmt.Println("fail: ", err)
}
// Check if we want to update.
if !pwd.IsPreferred(hash) {
newHash, err := pwd.Passwd(pass, "")
if err != nil {
fmt.Println("fail: ", err)
}
fmt.Println("new hash:", newHash)
}
// Output:
// new hash: $1$81ed91e1131a3a5a50d8a68e8ef85fa0
}
This shows how one would set a preferred hashing type and if the current version of ones password is not the preferred type updates it to enhance the security of the hashed password when someone logs in.
https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L33-L59
[47°09′03″S, 126°43′26″W] Dosimeter still failing
In this House — We might fail, but never with abandon — Every moment is fresh, unimpeded by the one before — We remove as many obligations as we add — There is something to protect, something to give everything for — Tsuyoku Naritai!
[47°09′07″S, 126°43′48″W] Transponder still failing
[47°09′55″S, 126°43′02″W] Dosimeter still failing
Tried to pull down the latest yarn, but I get this:
unable to access ‘https://git.mills.io/yarnsocial/yarn/’: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Not sure if the issue is on my end or the other..
of course the Soviet Union failed—they didn’t have computers yet!
[47°09′39″S, 126°43′05″W] Dosimeter still failing
[47°09′36″S, 126°43′46″W] Transponder still failing – switching to analog communication
[47°09′54″S, 126°43′16″W] Transponder still failing
[47°09′31″S, 126°43′41″W] Dosimeter still failing
[47°09′46″S, 126°43′22″W] Dosimeter still failing
[47°09′29″S, 126°43′05″W] Transponder still failing – switching to analog communication
[47°09′45″S, 126°43′00″W] Transponder still failing
[47°09′20″S, 126°43′47″W] Transponder still failing
[47°09′32″S, 126°43′47″W] Dosimeter still failing
[47°09′42″S, 126°43′25″W] Dosimeter still failing
[47°09′03″S, 126°43′14″W] Transponder still failing – switching to analog communication
[47°09′07″S, 126°43′38″W] Transponder still failing – switching to analog communication
[47°09′13″S, 126°43′34″W] Transponder still failing – switching to analog communication
[47°09′25″S, 126°43′52″W] Dosimeter still failing
[47°09′05″S, 126°43′31″W] Transponder still failing – switching to analog communication
[47°09′39″S, 126°43′56″W] Dosimeter still failing
Before Chromebooks: The 2009 “litl webbook”
A look back at the failed, Linux “Web-book” that paved the way for Chromebooks. ⌘ Read more
[47°09′05″S, 126°43′19″W] Transponder still failing – switching to analog communication
[47°09′35″S, 126°43′10″W] Transponder still failing
[47°09′00″S, 126°43′23″W] Dosimeter still failing
[47°09′57″S, 126°43′16″W] Transponder still failing
(cont.)
Just to give some context on some of the components around the code structure.. I wrote this up around an earlier version of aggregate code. This generic bit simplifies things by removing the need of the Crud functions for each aggregate.
Domain ObjectsA domain object can be used as an aggregate by adding the event.AggregateRoot struct and finish implementing event.Aggregate. The AggregateRoot implements logic for adding events after they are either Raised by a command or Appended by the eventstore Load or service ApplyFn methods. It also tracks the uncommitted events that are saved using the eventstore Save method.
type User struct {
Identity string ```json:"identity"`
CreatedAt time.Time
event.AggregateRoot
}
// StreamID for the aggregate when stored or loaded from ES.
func (a *User) StreamID() string {
return "user-" + a.Identity
}
// ApplyEvent to the aggregate state.
func (a *User) ApplyEvent(lis ...event.Event) {
for _, e := range lis {
switch e := e.(type) {
case *UserCreated:
a.Identity = e.Identity
a.CreatedAt = e.EventMeta().CreatedDate
/* ... */
}
}
}
Events
Events are applied to the aggregate. They are defined by adding the event.Meta and implementing the getter/setters for event.Event
type UserCreated struct {
eventMeta event.Meta
Identity string
}
func (c *UserCreated) EventMeta() (m event.Meta) {
if c != nil {
m = c.eventMeta
}
return m
}
func (c *UserCreated) SetEventMeta(m event.Meta) {
if c != nil {
c.eventMeta = m
}
}
Reading Events from EventStore
With a domain object that implements the event.Aggregate the event store client can load events and apply them using the Load(ctx, agg) method.
// GetUser populates an user from event store.
func (rw *User) GetUser(ctx context.Context, userID string) (*domain.User, error) {
user := &domain.User{Identity: userID}
err := rw.es.Load(ctx, user)
if err != nil {
if err != nil {
if errors.Is(err, eventstore.ErrStreamNotFound) {
return user, ErrNotFound
}
return user, err
}
return nil, err
}
return user, err
}
OnX Commands
An OnX command will validate the state of the domain object can have the command performed on it. If it can be applied it raises the event using event.Raise() Otherwise it returns an error.
// OnCreate raises an UserCreated event to create the user.
// Note: The handler will check that the user does not already exsist.
func (a *User) OnCreate(identity string) error {
event.Raise(a, &UserCreated{Identity: identity})
return nil
}
// OnScored will attempt to score a task.
// If the task is not in a Created state it will fail.
func (a *Task) OnScored(taskID string, score int64, attributes Attributes) error {
if a.State != TaskStateCreated {
return fmt.Errorf("task expected created, got %s", a.State)
}
event.Raise(a, &TaskScored{TaskID: taskID, Attributes: attributes, Score: score})
return nil
}
Crud Operations for OnX Commands
The following functions in the aggregate service can be used to perform creation and updating of aggregates. The Update function will ensure the aggregate exists, where the Create is intended for non-existent aggregates. These can probably be combined into one function.
// Create is used when the stream does not yet exist.
func (rw *User) Create(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil && !errors.Is(err, ErrNotFound) {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
// Update is used when the stream already exists.
func (rw *User) Update(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
(cont.)
Just to give some context on some of the components around the code structure.. I wrote this up around an earlier version of aggregate code. This generic bit simplifies things by removing the need of the Crud functions for each aggregate.
Domain ObjectsA domain object can be used as an aggregate by adding the event.AggregateRoot struct and finish implementing event.Aggregate. The AggregateRoot implements logic for adding events after they are either Raised by a command or Appended by the eventstore Load or service ApplyFn methods. It also tracks the uncommitted events that are saved using the eventstore Save method.
type User struct {
Identity string ```json:"identity"`
CreatedAt time.Time
event.AggregateRoot
}
// StreamID for the aggregate when stored or loaded from ES.
func (a *User) StreamID() string {
return "user-" + a.Identity
}
// ApplyEvent to the aggregate state.
func (a *User) ApplyEvent(lis ...event.Event) {
for _, e := range lis {
switch e := e.(type) {
case *UserCreated:
a.Identity = e.Identity
a.CreatedAt = e.EventMeta().CreatedDate
/* ... */
}
}
}
Events
Events are applied to the aggregate. They are defined by adding the event.Meta and implementing the getter/setters for event.Event
type UserCreated struct {
eventMeta event.Meta
Identity string
}
func (c *UserCreated) EventMeta() (m event.Meta) {
if c != nil {
m = c.eventMeta
}
return m
}
func (c *UserCreated) SetEventMeta(m event.Meta) {
if c != nil {
c.eventMeta = m
}
}
Reading Events from EventStore
With a domain object that implements the event.Aggregate the event store client can load events and apply them using the Load(ctx, agg) method.
// GetUser populates an user from event store.
func (rw *User) GetUser(ctx context.Context, userID string) (*domain.User, error) {
user := &domain.User{Identity: userID}
err := rw.es.Load(ctx, user)
if err != nil {
if err != nil {
if errors.Is(err, eventstore.ErrStreamNotFound) {
return user, ErrNotFound
}
return user, err
}
return nil, err
}
return user, err
}
OnX Commands
An OnX command will validate the state of the domain object can have the command performed on it. If it can be applied it raises the event using event.Raise() Otherwise it returns an error.
// OnCreate raises an UserCreated event to create the user.
// Note: The handler will check that the user does not already exsist.
func (a *User) OnCreate(identity string) error {
event.Raise(a, &UserCreated{Identity: identity})
return nil
}
// OnScored will attempt to score a task.
// If the task is not in a Created state it will fail.
func (a *Task) OnScored(taskID string, score int64, attributes Attributes) error {
if a.State != TaskStateCreated {
return fmt.Errorf("task expected created, got %s", a.State)
}
event.Raise(a, &TaskScored{TaskID: taskID, Attributes: attributes, Score: score})
return nil
}
Crud Operations for OnX Commands
The following functions in the aggregate service can be used to perform creation and updating of aggregates. The Update function will ensure the aggregate exists, where the Create is intended for non-existent aggregates. These can probably be combined into one function.
// Create is used when the stream does not yet exist.
func (rw *User) Create(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil && !errors.Is(err, ErrNotFound) {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
// Update is used when the stream already exists.
func (rw *User) Update(
ctx context.Context,
identity string,
fn func(*domain.User) error,
) (*domain.User, error) {
session, err := rw.GetUser(ctx, identity)
if err != nil {
return nil, err
}
if err = fn(session); err != nil {
return nil, err
}
_, err = rw.es.Save(ctx, session)
return session, err
}
if you fail in a way that is common, nobody blames you Ask HN: Why did smartphones become a single point of failure? | Hacker News
[47°09′01″S, 126°43′48″W] Dosimeter still failing
[47°09′27″S, 126°43′21″W] Transponder still failing
[47°09′16″S, 126°43′18″W] Dosimeter still failing
[47°09′49″S, 126°43′59″W] Transponder still failing – switching to analog communication
[47°09′28″S, 126°43′55″W] Transponder still failing
[47°09′11″S, 126°43′03″W] Dosimeter still failing
[47°09′58″S, 126°43′39″W] Transponder still failing – switching to analog communication
[47°09′49″S, 126°43′24″W] Transponder still failing
[47°09′21″S, 126°43′06″W] Dosimeter still failing
[47°09′43″S, 126°43′16″W] Transponder still failing – switching to analog communication
[47°09′14″S, 126°43′16″W] Dosimeter still failing
[47°09′22″S, 126°43′23″W] Transponder still failing – switching to analog communication
Evergrande crisis: embattled developer could face liquidation as creditor files winding-up petition in Hong Kong
The embattled developer received a winding-up petition from a creditor reportedly owned by a member of Hong Kong’s leadership election committee, for failing to pay US$109.91 million. ⌘ Read more
Rent control law fails to help Hong Kong’s poorest and leaves loopholes for landlords, advocacy group says
Society for Community Organisation appeals to government to put caps on rent levels to ease the problem. ⌘ Read more
‘See you next year’: China’s ‘King of gaokao’ fails to get marks for dream university after sitting the entrance exam for 26th time
A man in China who shot to fame after repeatedly sitting the country’s university entrance exam has failed to get the score he wanted for the 26th time — but plans to try again next year. ⌘ Read more
[47°09′49″S, 126°43′18″W] Transponder still failing – switching to analog communication
Erlang Solutions: Contract Programming an Elixir approach – Part 1
This series explores the concepts found in Contract Programming and adapts them to the Elixir language. Erlang and BEAM languages, in general, are surrounded by philosophies like “fail fast”, “defensive programming”, and “offensive programming”, and contract programming can be a nice addition. The series is also available on Github.
You will find a lot … ⌘ Read more
Earthquake hits Afghanistan, at least 255 dead
Local officials say the death toll could rise further if the government fails to dispatch emergency help to the affected areas quickly. ⌘ Read more
Former Hong Kong leader CY Leung says American Express apologised to wife Regina after suing her over allegedly unpaid HK$93,155 credit card bill
American Express International claimed Regina Leung Tong Ching-yee had ‘refused, failed or otherwise neglected’ to settle an outstanding bill of HK$93,155 as of April 28. ⌘ Read more
[47°09′16″S, 126°43′50″W] Transponder still failing – switching to analog communication
Tencent news aggregator app Kuai Bao to cease operations next month, as China’s Big Tech firms cut noncore businesses
Launched in 2015, Kuai Bao has failed to grow big enough to remain competitive against rivals led by ByteDance-owned Jinri Toutiao. ⌘ Read more
**“This decision is not only a hollow response to Covid-19, but it sends the message that intellectual property rights outweigh the rights to health and life.”
https://www.amnesty.org/en/latest/news/2022/06/covid-19-wto-ministerial-decision-on-trips-agreement-fails-to-set-rules-that-could-save-lives/**
“This decision is not only a hollow response to Covid-19, but it sends the message that intellectual property rights outweigh the rights to health and life.”
[amnesty.org/en/latest/news/2…](https://www.amnesty. … ⌘ Read more
Australia’s China bias and colonial blinkers mean it fails to see big picture for Pacific islands’ development
Canberra had chosen symbolic gestures and feeble investments over more practical initiatives now being offered by Beijing to Pacific island nations. Australia must shed its colonial mindset and stop claiming to always have the moral high ground over China. ⌘ Read more
‘Find a sperm donor’: Chinese doctor shocked to find failed-pregnancy patient is married to son of her paternal aunt
A video of a college-educated patient who married her cousin and telling a doctor about a string of failed pregnancies sparks online debate. ⌘ Read more
Tesla’s Elon Musk sued by investor in ‘toxic’ workplace discrimination accusation
The lawsuit accuses the defendants – Musk, 11 Tesla board members and the company – of failing to address and remedy the red flags concerning internal reports of discrimination and harassment. ⌘ Read more
WeChat suffers glitch that stopped users from paying for lunch deliveries before noon
Users of the Tencent app have been flocking online to complain that the payment function of WeChat failed to respond on Thursday morning. ⌘ Read more
[47°09′14″S, 126°43′34″W] Transponder still failing – switching to analog communication
[47°09′44″S, 126°43′32″W] Transponder still failing
Iran preparing for rocket launch, satellite images suggest amid nuclear tensions
A launch pad is visible at the Imam Khomeini Spaceport, the site of Tehran’s recent failed attempts to put a satellite into orbit. ⌘ Read more
[47°09′36″S, 126°43′06″W] Dosimeter still failing
[47°09′39″S, 126°43′29″W] Transponder still failing – switching to analog communication
[47°09′11″S, 126°43′07″W] Dosimeter still failing
[47°09′44″S, 126°43′27″W] Transponder still failing
[47°09′59″S, 126°43′22″W] Dosimeter still failing
[47°09′37″S, 126°43′25″W] Transponder still failing – switching to analog communication
[47°09′44″S, 126°43′45″W] Dosimeter still failing
[47°09′32″S, 126°43′14″W] Transponder still failing – switching to analog communication
[47°09′47″S, 126°43′29″W] Dosimeter still failing
[47°09′55″S, 126°43′53″W] Transponder still failing
[47°09′38″S, 126°43′06″W] Transponder still failing – switching to analog communication
[47°09′22″S, 126°43′50″W] Dosimeter still failing
[47°09′55″S, 126°43′01″W] Dosimeter still failing
[47°09′55″S, 126°43′02″W] Transponder still failing – switching to analog communication
[47°09′45″S, 126°43′01″W] Dosimeter still failing
[47°09′22″S, 126°43′25″W] Transponder still failing – switching to analog communication
[47°09′34″S, 126°43′39″W] Transponder still failing
hey @xuu@txt.sour.is i’m trying to sort of get running your keyproofs thing on my hashbang’s site root, but I get this:
Apr 01 02:55:25 de1 sour.is-keyproofs[9084]: 2:55AM ERR home/novaburst/keyproofs/main.go:73 > Application Failed error=": missing jid"
[47°09′57″S, 126°43′35″W] Transponder still failing – switching to analog communication
[47°09′52″S, 126°43′50″W] Transponder still failing
Erlang Solutions: 5 Key Tech Priorities for Fintech Leaders in 2022
Issues caused by sub-optimal tech choices are commonplace in the industry, leading to companies failing under unexpected stress or being unable to adapt in time when their business requirements change.
While no two projects are the same, we’ve observed some common themes for using scalable futureproof technologies to build diverse fintech systems. Taking advantage of these learnings sets financial service provi … ⌘ Read more
[47°09′25″S, 126°43′35″W] Dosimeter still failing
Save time with partial re-runs in GitHub Actions
It is now possible to re-run only failed jobs or a single job in GitHub Actions workflows. ⌘ Read more
[47°09′51″S, 126°43′05″W] Transponder still failing – switching to analog communication
[47°09′23″S, 126°43′25″W] Dosimeter still failing
[47°09′05″S, 126°43′51″W] Transponder still failing – switching to analog communication