- Dependabot does not honor Gradle's
resolutionStrategy
. Here is the issue for dependabot not working with gradle's resolutionStrategy. A typical usage of Gradle's resolutionStrategy is for upgrading vulnerable dependencies that are transitive to the application. - Dependabot does not show which vulnerabilities have been resolved by the PR before PR is merged to main branch
- Dependabot uses public runners and cannot access private artifact repositories (possible workaround using private runners)
- Gradle plugin org.owasp.dependencycheck takes into account proper versions from
resolutionStrategy
and also lists at least one other vulnerability that is not listed by Dependabot.
With groovyx.net.http.HTTPBuilder
outdated and not ported to latest Groovy version, here is the simple code to do a REST call
String json = new URL(url).getText(
requestProperties: ['Authorization': 'Bearer ' + token]
)
JsonSlurper jsonSlurper = new JsonSlurper()
Map content = jsonSlurper.parseText(json)
Better yet, newer java.net.http.HttpClient
that comes w/ JRE can now be used:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def "fetch file info"() { | |
given: | |
UUID fileId = UUID.randomUUID() | |
FileMetadata response = new FileMetadata(fileId, "/somePath", "someFileName.xls", 100) | |
wireMockServer.stubFor( | |
get(urlPathTemplate(uri)) | |
.withPathParam("fileId", equalTo(fileId.toString())) | |
.withHeader(AUTHORIZATION_HEADER, expectedAuthorization) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.google.api.client.http.HttpHeaders | |
import com.google.api.client.http.HttpResponseException | |
import com.google.cloud.storage.StorageException | |
import org.spockframework.spring.SpringBean | |
import org.springframework.test.web.servlet.ResultActions | |
import static org.hamcrest.Matchers.is | |
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get | |
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print | |
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content |
Things I don't like about java records
- record is final so it
- can't be used in inheritance
- can't be mocked in unit tests
- doesn't support builder pattern and as the number of fields grows Lombok's
@Builder
becomes preferable- although it seems to be possible to use Lombok's
@Builder
with java record
- although it seems to be possible to use Lombok's
- Getter / setter name name() vs getName()
I don't see any major advantages with using record other than its immutable nature.
- if there is a chain of PRs, with PR1 (
feature1 -> main
) and PR2 (feature2 -> feature1
) then when PR1 is merged, PR2's base is automatically adjusted to main (GitHub). I do not believe this will happen with a squash. - ability to check if the commits from other branches have been merged to main (
using git branch -r --no-merge
) which is especially useful for release/* deployment strategies if a file was first renamed and then modified in more than one commit (recommended approach for git to retain history), if these commits are merged then the history is retained. Otherwise, if squashed, git might consider the rename and update as old file deletion and new file addition (depending of the percentage of the changes). - If there are commits that logically address separate issues it's easier to understand such changes as individual commits in history rather than squashed result
However, there is definitely a case for squashing PRs when individual com
Download the audio only
utlink='https://www.youtube.com/watch?v=bn9F19Hi1Lk'
- get all video and audio links for the video
youtube-dl -F "$utlink"
- pick the best mp4a audio only option (e.g. 140)
- get a download link
audio=$(youtube-dl -f 140 -g "$utlink")
- use audio download link in ffmpeg to download portion of the audio
- download first 5 mins of the audio
ffmpeg -i "$audio" -t 300 -c:a libmp3lame waves300.mp3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Getter | |
private final KafkaTemplate<String, T> kafkaTemplate; | |
public CompletableFuture<SendResult<String, T>> sendMessage(String key, T message, Integer partition) { | |
try { | |
return getKafkaTemplate().send(getTopicName(), partition, key, message); | |
} catch (Exception e) { | |
throw new RuntimeException("Failed to send a message to topic: " + getTopicName(), e); | |
} |
NewerOlder