You might want to change the inputmode type of the inputs from numeric to decimal. With the former I can't add a comma/dot on my iPhone's browser, an issue when $100 is 0,005. decimal Fractional numeric input keyboard containing the digits and decimal separator for the user's locale (typically . or ,). Devices may or may not show a minus key (-).
numeric Numeric input keyboard, but only requires the digits 0–9. Devices may or may not show a minus key.
|
|
|
Por acaso, o teu site não consegue obter a informação de quando o user se registou?
Conseguir consegue, mas eu teria que pegar cada informação (do fórum) no momento que é necessário ou já ter esses dados anteriormente (tendo que analisar cada perfil). Melhor só usar o BPIP.org quando precisar, que já cuida desse lado.
|
|
|
Ela não fez nada de fato errado. Ela não hackeou ninguém.
Apropriação indébita é algo errado e ilegal em diversos países. A pessoa recebeu SETE MILHÕES de dólares ao invés de SESSENTA E OITO dólares (102941x mais do que deveria). Certamente ela deveria tentar fazer um acordo para ficar com pelo menos uma parte do dinheiro. Duvido muito que algum juiz deixe ela ficar com a grana.
Isso não existe. No máximo dá para a empresa a presentear com um troco como agradecimento pela honestidade. Nem 1% (70 MIL) lhe é devido. Provavelmente ela vai ficar "apenas" com a casa.
Isso nunca aconteceria. O Supremo Tribunal do Estado de Victoria ordenou que a casa, que foi comprada pela irmã da mulher em causa, fosse vendida e o dinheiro devolvido à empresa. Espera-se que o caso regresse ao tribunal em outubro.
|
|
|
- Então uma pessoa recebe um valor destes, de uma plataforma que exige KYC em tudo, e esta a espera de não ser apanhada?
Considerando que se passaram 6-7 meses, é capaz dela ter deixado o dinheiro parado "para ver no que vai dar" e depois de 1 mês sem notícias, pensou que a empresa tinha simplesmente esquecido ou nunca iria perceber. A sorte foi que ela comprou uma casa e não crypto apenas para ""perder"" tudo em um acidente de barco.
|
|
|
Sobre as notas, uma dúvida... onde fica salvo as anotações, tem como fazer backup delas caso eu queira formatar o pc, reinstalar o navegador ou levar para outro local?
No update que postei hoje já dá para exportar e importar localmente (copiando e salvando um texto com suas notas). Vou melhorando o script com o tempo.
|
|
|
Saylor está sendo processado pela SEC por tax fraud: https://twitter.com/AGKarlRacine/status/1565031380471382019NEW: Today, we’re suing Michael Saylor - a billionaire tech executive who has lived in the District for more than a decade but has never paid any DC income taxes - for tax fraud. Será que esse é o motivo que o fez sair do cargo de CEO da empresa? A sua empresa (MicroStrategy) também está na mira: We’re also suing his company, MicroStrategy, for conspiring to help him evade taxes he legally owes on hundreds of millions of dollars he’s earned while living in DC.
|
|
|
Pediram esse script lá no board gringo e também vou postar ele aqui. Ele adiciona uma opção de adicionar uma nota/descrição em cada usuário, que só pode ser vista localmente. É uma forma de lembrar detalhes de uma pessoal (i.e bem conhecida, amigável, já negociei, estou devendo X reais, etc...). Tópico original: https://bitcointalk.org/index.php?topic=5411599Installation- Install Tampermonkey (Chrome, Brave...) or Greasymonkey (Firefox). - Add a new script and paste the code: // ==UserScript== // @name BitcoinTalk User Notes // @version 0.3 // @description Adds an note field to each user on BitcoinTalk // @author TryNinja // @match https://bitcointalk.org/* // @icon https://www.google.com/s2/favicons?sz=64&domain=bitcointalk.org // @grant GM.setValue // @grant GM.getValue // @grant GM_setValue // @grant GM_getValue // ==/UserScript==
const enableModal = 1;
(async function() { 'use strict';
const addStyle = (css) => { const style = document.getElementById("GM_addStyleBy8626") || (() => { const style = document.createElement('style'); style.id = "GM_addStyleBy8626"; document.head.appendChild(style); return style; })(); const sheet = style.sheet; sheet.insertRule(css, (sheet.rules || sheet.cssRules || []).length); }
if (enableModal) { addStyle(`.modal { position: fixed; width: 100vw; height: 100vh; top: 0; left: 0; display: flex; align-items: center; justify-content: center; }`);
addStyle(`.modal-bg { position: absolute; width: 100%; height: 100%; }`);
addStyle(`.modal-container { min-width: 30vh; border-radius: 10px; background: #fff; position: relative; padding: 10px; }`);
addStyle(`.modal-close { position: absolute; right: 15px; top: 15px; outline: none; appearance: none; color: red; background: none; border: 0px; font-weight: bold; cursor: pointer; }`); };
const getValue = typeof GM_getValue === 'undefined' ? GM.getValue : GM_getValue; const setValue = typeof GM_setValue === 'undefined' ? GM.setValue : GM_setValue;
const getParentNodeNth = (element, num) => { let parent = element; for (let i = 0; i < num; i++) { if (parent.parentNode) { parent = parent.parentNode; } } return parent; };
const getNotes = async () => { let notes; try { notes = JSON.parse(await getValue('notes') ?? '{}'); } catch (error) { notes = {}; }; return notes; };
const setNotes = async notes => { if (typeof notes === 'string') { try { JSON.parse(notes); await setValue('notes', notes); } catch (error) { console.error('Notes value is an invalid JSON format') }; } else if (typeof notes === 'object') { await setValue('notes', JSON.stringify(notes ?? {})); }; };
const getUserNote = async user => { const notes = await getNotes(); if (!notes) { return null; } return notes[user]; };
const setUserNote = async (user, note) => { const notes = await getNotes(); notes[user] = note; await setNotes(notes) };
const texts = { addNote: '<a style="cursor: pointer; font-weight: bold" href="javascript:;">📜 Add Note</a>', withNote: note => `<a style="cursor: pointer; font-weight: bold" href="javascript:;"><b>📜</b> ${note}</a>` };
const addNote = async (user, element) => { const note = prompt('Input the note (empty to remove):'); await setUserNote(user, note); if (note) { element.innerHTML = texts.withNote(note); } else if (note !== null) { element.innerHTML = texts.addNote; } };
const exportNotesToInput = async () => { const notesInput = document.querySelector('#notesInput'); const notesImportExportDiv = document.querySelector('#notesImportExportDiv'); const doneImportButton = document.querySelector('#doneImportButton'); const notes = await getNotes(); const notesJsonString = JSON.stringify(Object.keys(notes) .filter(user => notes[user]).reduce((obj, user) => ({...obj, [user]: notes[user]}), {}));
notesInput.value = notesJsonString; notesImportExportDiv.querySelector('span').innerText = 'Export (copy the code)'; notesImportExportDiv.style.display = 'flex'; doneImportButton.style.display = 'none'; };
const importNotesFromInput = async () => { const notesInput = document.querySelector('#notesInput'); const notesImportExportDiv = document.querySelector('#notesImportExportDiv'); const doneImportButton = document.querySelector('#doneImportButton');
notesInput.value = ''; notesImportExportDiv.querySelector('span').innerText = 'Import (paste the code)'; notesImportExportDiv.style.display = 'flex'; doneImportButton.style.display = 'inline-block'; };
const importNotesFromInputDone = async () => { const notesInput = document.querySelector('#notesInput'); const confirmImport = confirm('Are you sure you want to override your local notes?');
if (confirmImport && notesInput.value) { setNotes(notesInput.value); loadUserNotesList(); } };
const insertNotesModal = async () => { let notesModal = document.querySelector('#userNotesModal');
if (!notesModal) { const moreMenuBtn = document.querySelector('body'); notesModal = document.createElement('div');
notesModal.innerHTML = ` <div class="modal" id="modal-one"> <div class="modal-bg modal-exit"></div> <div class="modal-container"> <div style="margin-bottom: 5px;"> <b style="font-size: 2rem;">User Notes</b> <button class="modal-close modal-exit">X</button> </div>
<div style="display: flex; align-items: center; margin-bottom: 5px;"> <button id="exportUserNotes">Export</button> <button id="importUserNotes">Import</button> </div>
<div> <div style="display: none; flex-direction: column;" id="notesImportExportDiv"> <span id="notesInputText"></span> <input id="notesInput" /> <button id="doneImportButton" style="display: none;">Done</button> </div>
</div>
<div id="userNotesList" /> </div> </div>`; notesModal.classList.add('modal'); notesModal.style.visibility = 'hidden'; notesModal.setAttribute('id', 'userNotesModal');
moreMenuBtn.after(notesModal);
const exportButton = document.querySelector('#exportUserNotes'); const importButton = document.querySelector('#importUserNotes'); const doneImportButton = document.querySelector('#doneImportButton');
exportButton.addEventListener('click', () => exportNotesToInput()); importButton.addEventListener('click', () => importNotesFromInput()); doneImportButton.addEventListener('click', () => importNotesFromInputDone()); };
return notesModal; };
const loadUserNotesList = async () => { const userNotesList = document.querySelector('#userNotesList');
const notes = await getNotes();
if (Object.keys(notes).length) { userNotesList.innerHTML = Object.keys(notes) .filter(user => notes[user]) .map((user) => `<a href="https://bitcointalk.org/index.php?action=profile;u=${user}" target="_blank">${user}</a>: ${notes[user]}`).join('<br/>'); } else { userNotesList.innerHTML = 'No notes...'; }; };
const insertUserNotesMenuButton = async () => { let notesBtn = document.querySelector('#userNotesMenuBtn'); const modal = await insertNotesModal(); const modalExit = modal.querySelectorAll('.modal-exit');
if (!notesBtn) { const moreMenuBtn = document.querySelector(`a[href='/more.php']`).parentNode; notesBtn = document.createElement('td');
notesBtn.innerHTML = '<td><a href="javascript:;" id="openUserNotes">User Notes</a></td>'; notesBtn.classList.add('maintab_back'); notesBtn.setAttribute('id', 'userNotesMenuBtn'); moreMenuBtn.after(notesBtn);
const openUserNotes = document.querySelector('#openUserNotes') const notesImportExportDiv = document.querySelector('#notesImportExportDiv'); const notesInput = document.querySelector('#notesInput');
openUserNotes.addEventListener('click', () => { modal.style.visibility = 'visible'; modal.style.opacity = 1; notesImportExportDiv.style.display = 'none'; notesInput.value = ''; loadUserNotesList(); }); modalExit.forEach(el => el.addEventListener('click', () => { modal.style.visibility = 'hidden'; modal.style.opacity = 0; })); }
return notesBtn; };
if (enableModal) { insertNotesModal(); insertUserNotesMenuButton(); };
if (window.location.href.match(/topic=\d+/)) { const targets = [...document.querySelectorAll('td.poster_info div a:last-child')] .filter(e => window.getComputedStyle(getParentNodeNth(e, 11)).display !== 'none');
targets.map(async target => { const [_, userId] = [...target.parentNode.parentNode.childNodes].find(childNode => childNode.innerHTML).innerHTML.match(/u=(\d+)/); const noteDiv = document.createElement('div'); const note = await getUserNote(userId); if (!note) { noteDiv.innerHTML = texts.addNote; } else { noteDiv.innerHTML = texts.withNote(note); } target.before(noteDiv); noteDiv.addEventListener('click', () => addNote(userId, noteDiv), false); }); } else if (window.location.href.match(/profile;u=\d+/)) { const [_, userId] = window.location.href.match(/u=(\d+)/); const target = getParentNodeNth(document.querySelector('#bodyarea table tr td tbody tr:nth-child(2) tr:last-child').parentNode, 1); const noteDiv = document.createElement('div'); const note = await getUserNote(userId); if (!note) { noteDiv.innerHTML = texts.addNote; } else { noteDiv.innerHTML = texts.withNote(note); } target.before(noteDiv); noteDiv.addEventListener('click', () => addNote(userId, noteDiv), false); } })();
|
|
|
Mas para uma Amazon comprar o domínio alguém, tem de falar com esse alguém. Não estou a ver uma Amazon a negociar com um anonimo.
No caso da web3? É só mandar uma oferta através de um mercado, ué. Postei ali em cima uma oferta que o rapaz do amazon.eth recebeu de $1m. Se quem fez a oferta foi a Amazon ou alguém querendo apostar em um flip futuro, não dá para saber, mas tá lá. Sinceramente duvido que uma empresa como Amazon, ou outra grande empresa, pague 1000 ETH a um anonimo!
Já fizeram parecido. A Budweiser comprou o ENS beer.eth por 30 ETH ($100k): https://finance.yahoo.com/news/budweiser-registers-beer-eth-domain-085142123.html
|
|
|
Version 0.3 - I added an "User Notes" menu (next to the logout button). - You can view, export and import your notes (WIP! needs more polishing and a better UI/UX). You can disable the new menu by changing enableModal from 1 to 0 at the top of the script. The updated code can be found in the OP.
Off topic: @TryNinja looking at your post history (last posts of the user) I noticed that you quoted a link of an image which is just ridiculously long line without a break. It ruined the arrangement of the last posts, is there any solution for this issue?
Lol, this is an issue the forum css has with long strings inside the code tag. I had to "censor" the code to fix the page. Maybe a script for that?
|
|
|
Se os domínios ENS se tornarem populares, facilmente as grandes empresas surgiram com ordens judiciais para que quem tiver o domínio i.e "amazon.eth" não o possa utilizar sob a pena de ser processado. A pessoa até o pode ter, mas não pode fazer nada com ele, e a marca talvez arranje um domínio adicional se não estiver disposta a pagar o valor exigido.
Acho difícil isso acontecer. Os domínios do ENS funcionam livremente onchain e ninguém sabe quem é o dono do endereço. Eu posso linkar o meu endereço com o amazon.eth e ele vai continuar funcionando. Para eu ser processado, terão que descobrir a minha identidade. É fácil de se obter o domínio com trademark no web2 porquê é uma empresa que controla esses registros centralizados, e ela pode simplesmente transferi-la para a verdadeira Amazon. Além do mais, todo domínio tem que ter um responsável por trás (com nome, telefone, e endereço).
|
|
|
Não estou a perceber a polemica. Quem coloca os NFTs nessa plataforma, já sabe que não recebe royalties. Porque é que isso é polemico? Eu lanço um projeto NFT. Para angariar fundos pós lançamento e continuar o seu desenvolvimento (seja lá qual seja), eu coloco uma fee de 2% que vai ser cobrada para cada venda realizada pelos mercados tradicionais (OpenSea, LooksRare...). Essa plataforma P2P faz com que fulano consiga vender o seu NFT sem pagar os meus 2%. Já viu onde tá a polemica?
|
|
|
Nesse caso eu pediria exemplos para quem diz isso. Você tem algum?
"Melhor" é bastante relativo.
A Ethereum é turing complete e permite a execução de smartcontracts. Por outro lado, é muito mais centralizada e suscetível à censura. Todos os dapps ficam à mercê de grandes provedores de nodes centralizados (tais como Infura e Alchemy, que inclusive censuraram o acesso ao smartcontract da Tornado Cash) e ninguém roda o seu próprio node.
A Doge produz blocos mais rapidamente, portanto é mais rápida e barata, mas peca exatamente na segurança da rede. Diminuir a variável na equação da dificuldade da rede não é uma solução para a escalabilidade da rede.
Eles são melhores por quê são mais rápidos e/ou completos? A Doge de jeito nenhum. A Ethereum eu acredito que tem seu caso de uso, sendo que é impossível dizer que ela é melhor que o Bitcoin por exercer um papel diferente da moeda criada pelo grande satoshi.
|
|
|
PSA: Do not randomly click an onion link online. It's very hard to memorize it, so checking for its legitimacy is hard. Instead, go to ChipMixer's official website and grab the link from there. Then bookmark it on your browser. chipmixer.com < if it's not .com, then it's a scam!
|
|
|
What do you get when you visit the page? Both of your codes are working fine on my end. It returns 9753.4870488971, which matches what the API endpoint returns (with the last digit being rounded).
|
|
|
Crazy idea: would it be possible to encrypt notes (from the browser) and upload it to your server?
Doable, I just need to find a way to encrypt them without the need to import an entire lib for that (i.e crypto-js). I want to keep the script as simple and clean as possible (no jquery, etc...). I'll probably add a local import/export as json soon. Then please answer my question, Is it safe to use? People seem inclined to like things from open source, but since Tampermonkey is from closed sources then security questions regarding privacy or such seem worth asking. Instead of blabbering, I'm just telling you I haven't tried it.
I have been using Tampermonkey for years. AFAIK, it is safe as long as you know which scripts you're importing. It's just easier than creating an extension for every script I use (I currently have 3 for the forum - enhanced merits, this one, and to quote posts on locked threads).
|
|
|
|